#lang racket/base
(require racket/stream)
(define ones (stream-cons 1 ones))
(stream->list (stream-take ones 15))
(define (stream-add s1 s2)
(for/stream ([a s1] [b s2]) (+ a b)))
(define twos (stream-add ones ones))
(stream->list (stream-take twos 15))
(define fibs (stream-cons 1
(stream-cons 1
(stream-add fibs
(stream-rest fibs)))))
(stream->list (stream-take fibs 15))