lazy(WIP)

在提取 length 里面 (mk-length mk-length) 的时候,利用 lambda 包一层实现了惰性,问:

(a a)

(lambda (x)
    ((a a) x))

有什么区别

在正常求值的时候应该看不出来区别,然而在作为参数传递的时候区别很大:

(define (do-x f x)
    (f x))

(do-x (a a) 1)
;先求值 (a a),再代入

(do-x (lambda (x)
        ((a a) x)) 1)
->
((lambda (x) ((a a) x)) 1)
->
((a a) 1)