;;; $Id: seq-as-ast.scm,v 1.3 2006/01/05 22:24:09 leavens Exp $ ;;; INFINITE SEQUENCES AS RECORDS (module seq-as-ast (lib "typedscm.ss" "typedscm") (provide seq-repeat seq-generator seq-nth seq-add) (deftype seq-repeat (-> (number) seq)) (deftype seq-generator (-> ((-> (number) number)) seq)) (deftype seq-nth (-> (seq number) number)) (deftype seq-add (-> (seq seq) seq)) (define-datatype seq seq? (seq-repeat (num number?)) (seq-generator (f (-> (number?) number?))) (seq-add (s1 seq?) (s2 seq?))) (define seq-nth (lambda (s n) (cases seq s (seq-repeat (num) num) (seq-generator (f) (f n)) (seq-add (s1 s2) (+ (seq-nth s1 n) (seq-nth s2 n)))))) ) ; end module