其他分享
首页 > 其他分享> > cps - 代码

cps - 代码

作者:互联网

代码:


(letrec ((f (lambda (x) (cons 'a x)))
         (g (lambda (x) (cons 'b (f x))))
         (h (lambda (x) (g (cons 'c x)))))
  (cons 'd (h '())))

;传递为向后传递,而不是向前传递
;向后传递(f x k)
;向前传递(k (f x))
;把k一层一层传递下去,k为 top level的
(letrec ((f (lambda (x k) (k (cons 'a x))))
         (g (lambda (x k) (f x (lambda (v) (k (cons 'b v))))));将(f x)的结果v,与'b cons起来,即(cons 'b v),传递给调用者k
         (h (lambda (x k) (g (cons 'c x) k)))) ;将g的调用结果传递给k,也就是(lambda (v) (k v)),可以简写为k
  (h '() (lambda (v) (cons 'd v)))) ;将h的调用结果v,与'd cons起来传递给调用者k,此处已经是top leve了,所以直接cons起来就可以了

标签:cons,调用者,代码,letrec,传递,cps,top,lambda
来源: https://blog.csdn.net/yilu_beiyu/article/details/122557716