我是Lisp Scheme的新手。我遇到了这个使用“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/Project2/decode.ss
让我们在Gen-Decoder-A中 帮我改变let to lambda
答案 0 :(得分:2)
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))