PasteRack.org
Paste # 11921
2016-02-09 16:28:52

Fork as a new paste.

Paste viewed 116 times.


Embed:

  1. #lang racket
  2.  
  3. (define (stream-take s n)
  4.   (define (take s ls n)
  5.     (if (= 0 n)
  6.         ls
  7.         (take (stream-rest s)
  8.               (cons (stream-first s) ls)
  9.               (- n 1))))
  10.   (reverse (take s '() n)))
  11.  
  12. (define (make-stream f n)
  13.   (stream-cons n (make-stream f (f n))))
  14.  
  15. (define naturals
  16.   (make-stream (curry + 1) 0))
  17.  
  18. (define odds
  19.   (make-stream (curry + 2) 1))
  20.  
  21. (stream-first naturals)
  22. (stream-take naturals 5)
  23.  
  24. (stream-first odds)
  25. (stream-take odds 5)

=>

0

'(0 1 2 3 4)

1

'(1 3 5 7 9)