我是LISP方案的新手。我遇到了使用" Let"的代码。我如何用lambda
替换它这是代码
(define Gen-Decoder-A
(lambda (p)
(define check-decode
(lambda (n)
(num-valid-words (encode-p p (encode-n n))))
)
(let ((decode-compare (map check-decode abc-nums)))
(encode-n (get-position (apply max decode-compare) decode-compare)))
((lambda
)
)
这是完整代码的链接:https://github.com/corypisano/cs314/blob/master/master/project2/decode.ss
让我们在gen-decoder-a中帮助我更改为lambda
let
只是 lambda
的句法糖 - let
变量可以被重写为lambda
参数,在调用lambda
时会受到限制。例如,此表达式:
(let ((decode-compare (map check-decode abc-nums)))
(encode-n (get-position (apply max decode-compare) decode-compare)))
等效于此:
((lambda (decode-compare)
(encode-n (get-position (apply max decode-compare) decode-compare)))
(map check-decode abc-nums))