Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define-syntax my-delay
- (syntax-rules ()
- ((my-delay x) (lambda () x))))
- (define-syntax cons-stream
- (syntax-rules ()
- ((cons-stream head tail)(cons head (delay tail)))))
- (define empty-stream `())
- (define (car-stream s)
- (car s))
- (define (cdr-stream s)
- (force (cdr s)))
- (define (nats-after n)
- (cons-stream n (nats-after (+ 1 n))))
- (define nats (nats-after 0))
- (define (pow-after n)
- (cons-stream (expt 2 n) (pow-after (+ n 1))))
- (define pow2 (pow-after 0))
- (define (fibs-after first second)
- (cons-stream (+ first second) (fibs-after second (+ first second))))
- (define fibs (fibs-after 0 1))
- (define (stream-take s n)
- (if (equal? n 0) `()
- (cons (car-stream s) (stream-take (cdr-stream s) (- n 1)))))
- (define (stream-from-list l)
- (if (null? l) `()
- (cons-stream (car l) (stream-from-list (cdr l)))))
- (define l `(1 2 3 4 5 6))
- (define (stream-map f s)
- (if (null? s) `()
- (cons-stream (f (car-stream s)) (stream-map f (cdr-stream s)))))
- (define (stream-filter p? s)
- (if (null? s) `()
- (if (p? (car-stream s)) (cons-stream (car-stream s) (stream-filter p? (cdr-stream s)))
- (stream-filter p? (cdr-stream s)))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement