lambda - Lisp 方案 : let to lambda

标签 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

let 在 Gen-Decoder-A 中 帮我把 let 改成 lambda

最佳答案

let 只是 lambda 的语法糖 - let 变量可以重写为 lambda 参数在调用 lambda 时被绑定(bind)。例如,这个表达式:

(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))

关于lambda - Lisp 方案 : let to lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47626087/

相关文章:

python - 如何确定函数是否已由 `lambda` 或 `def` 声明?

Scheme Factorial (fact* l) 问题

lisp - 在没有引用运算符的 LISP 中输入参数(属性列表/语义网络/基本函数)

lisp - 如何定义和使用 Common Lisp 包(库)?

c# - 试图理解什么是表达式树

python - python中的常量lambda函数

c# - 为什么 MSDN 站点上的这个 lambda 示例不起作用?

方案延续: What's the difference between call 'call/cc' in top level and non-top level?

functional-programming - Racket 中的引用变量

regex - 通过 emacs Lisp 的顶级 S 表达式分段 Lisp 源代码?