Lisp Scheme : let to lambda



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

最新更新