Lisp Scheme:让lambda

时间:2017-12-04 03:27:33

标签: lambda scheme lisp let

我是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

1 个答案:

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