X-Git-Url: http://git.lukelau.me/?a=blobdiff_plain;f=tests.scm;h=cd0d98be49e20a11140b0e533281793ed4e9643c;hb=469d66c04e8458d7e4e8441ffe649e4ced85575d;hp=f078229dd6364f78ac5769341f8f53b8d3edad27;hpb=e3f83f555562bb5681bdb1ae9a2842df49c20d28;p=scheme.git diff --git a/tests.scm b/tests.scm index f078229..cd0d98b 100644 --- a/tests.scm +++ b/tests.scm @@ -103,3 +103,33 @@ (f f (- n 1) (+ x 1)))))] (inc inc 3 2)) 5) + +(test-prog '(let ([go (lambda (n m x) + (if (= n 0) + x + (go (- n 1) m (* x m))))] + [pow (lambda (p y) (go p y 1))]) + + (pow 3 2)) + 8) + +(test-prog '(let ([pow (lambda (p y) + (let ([go (lambda (n x) + (if (= n 0) + x + (go (- n 1) (* x y))))]) + (go p 1)))]) + (pow 4 2)) + 16) + +(test-prog-stdout '(let ([f (lambda (n) + (if (= n 0) + 0 + (let () + (print "a") + (g (- n 1)))))] + [g (lambda (m) + (let () + (print "b") + (f (- m 1))))]) + (f 10)) "ababababab")