diff options
Diffstat (limited to 'examples/fact.scm')
-rw-r--r-- | examples/fact.scm | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/examples/fact.scm b/examples/fact.scm new file mode 100644 index 0000000..af56eb7 --- /dev/null +++ b/examples/fact.scm @@ -0,0 +1,22 @@ +(define (fact n) + (if (= n 0) + 1 + (* n (fact (- n 1))))) + +(define (fact/cps n cont) + (if (= n 0) + (cont 1) + (fact/cps (- n 1) (lambda (a) (cont (* n a)))))) + +(define num 11) + +(display (string-append "fact: " (number->string (fact num)))) +(display (string-append "fact/cps: " (number->string (fact/cps num (lambda (x) x))))) + + (define return #f) + +(display (+ 1 (call/cc + (lambda (cont) + (set! return cont) + 1)))) +(display (return 23)) |