gpt4 book ai didi

scheme - `let` 在 Scheme 中是如何工作的?

转载 作者:行者123 更新时间:2023-12-04 13:21:02 25 4
gpt4 key购买 nike

我用 let创建一个临时变量,然后在下一条语句中使用这个临时变量。然而,DrScheme 提示说,

let: bad syntax (not an identifier and expression for a binding) in: temp

这是我的代码片段:
(define (case-one-helper str)
(let (temp (substring str (+ 3 (string-contains str "my"))))
(substring temp (string-contains temp " "))))

我想知道 let 创建的变量的值是否必须在编译时知道吗?

编辑
我刚刚想通了,错过了 () .

谢谢,

最佳答案

虽然不完全是您遇到的问题,但基于您对评估参数顺序的疑问,let也是 lambda 的“语法糖”,后跟它的参数,这些参数首先被评估,然后传递给然后被评估的 lambda。

例如:

(let ((a (list 1 2 3))
(b (list 4 5 6)))
(cons a b))

是相同的:
((lambda (list-a list-b) (cons list-a list-b)) (list 1 2 3) (list 4 5 6))

因此,如果您对评估顺序感到疑惑,则在评估主体之前对参数进行完全评估(并且一个参数不能引用它之前的参数......使用 let* 用于需要类似绑定(bind)的东西)。

关于scheme - `let` 在 Scheme 中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5766810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com