Add tasks for all the new languages

This commit is contained in:
Tina Müller 2016-12-05 23:44:36 +01:00
parent 9dc3c2bb62
commit bba7bfd280
13208 changed files with 134745 additions and 0 deletions

View file

@ -0,0 +1,36 @@
(lib 'tasks) ;; for make-generator
;; generator of generators
(define (gen-power power)
(make-generator
(lambda(n) (yield (expt n power)) (1+ n)) 1))
(define powers-2 (gen-power 2))
(define powers-3 (gen-power 3))
(take powers-3 10)
→ (1 8 27 64 125 216 343 512 729 1000)
;; generators substraction
;; input : two generators ga, gb - Sequences must be increasing
;; output : new generator = ga sequence minus gb sequence
(define (gen-substract ga gb)
(define (substract b (a))
(set! a (next ga))
(while (>= a b) ; avance b until > a
(when (= a b) (set! a (next ga)))
(set! b (next gb)))
(yield a)
b ) ;; b := next state
(make-generator substract (next gb)))
;; application
(define task (gen-substract (gen-power 2) (gen-power 3)))
(drop task 20)
(take task 10)
→ (529 576 625 676 784 841 900 961 1024 1089)
; inspect
task → #generator:state: 1331