小保哥

博客园 首页 新随笔 联系 订阅 管理

<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)


posted on 2012-12-29 14:14  小保哥  阅读(142)  评论(0)    收藏  举报