scheme4.rkt 805 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #lang racket
  2. (define (genFig n)
  3. (let loop ((f '())
  4. (k 0))
  5. (if(< k n)
  6. (loop (cons (genRow n k) f)
  7. (+ k 1))
  8. f)))
  9. (define (genRow len pos)
  10. (let loop ((v '())
  11. (k 0))
  12. (if (< k len)
  13. (loop (cons (if(= pos k) 1 0) v)
  14. (+ k 1))
  15. v)))
  16. (define (iterate f v)
  17. (delay (cons v (iterate f (f v)))))
  18. (define (take n iter)
  19. (if (= n 0)
  20. '()
  21. (let ((v (force iter)))
  22. (cons (car v) (take (- n 1) (cdr v))))))
  23. (define (infinity)
  24. (+ 1 (infinity)))
  25. (define (fst x y) x)
  26. (define lazy-infinity (delay (infinity)))
  27. (force (fst 3 lazy-infinity))
  28. (delay (force infinity))
  29. (fst 10 lazy-infinity)
  30. (take 10 (iterate (lambda (x) (+ x 1)) 5))
  31. (define succession (iterate (lambda (x) (+ x 1)) 3))
  32. (print succession)