scheme4.rkt 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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)
  33. (newline)
  34. (car (force (cdr (force (cdr (force succession))))))
  35. (define lista '(1 2))
  36. (print lista)
  37. (newline)
  38. (car lista)
  39. (abs (car (cdr lista)))
  40. (define (re-map f L cond?)
  41. (let loop ((res '())
  42. (cur L))
  43. (if (null? cur)
  44. res
  45. (let* ((k #f)
  46. (v (call/cc
  47. (lambda (cont)
  48. (set! k cont)
  49. (f (car cur))))))
  50. (if (cond? v)
  51. (cons k v)
  52. (loop (append res (list v))
  53. (cdr cur)))))))
  54. ;(define V (re-map (lambda (x) (+ x 1)) '(0 1 -4 3 -6 5) negative?))
  55. (define mini-lista (cons 1 2))