<Yet Another Scheme Tutorial>
(define (return x) x)
(define (k+ a b k)
(k (+ a b)))
(define (kfact n k)
(if (= n 1)
(k 1)
(kfact (- n 1) (lambda (x) (k (* n x))))))
(kfact 4 (lambda (x) (k+ x 3 return)))
=>
(kfact 3 (lambda (x) (fun1 (* 4 x))))
=>
(kfact 2 (lambda (x) (fun2 (* 3 x))))
(kfact 3 (lambda (x)
(k+ (* 4 x) 3 return)))
(kfact 2 (lambda (x)
(k+ (* 4 (* 3 x)) 3 return)))
(kfact 1 (lambda (x)
(k+ (* 4 (* 3 (* 2 x))) 3 return)))
=>(k+ (* 4 (* 3 (* 2 1))) 3 return)
浙公网安备 33010602011771号