gpt4 book ai didi

scheme - Chez Scheme/Racket 中的 let* 是如何定义的?

转载 作者:行者123 更新时间:2023-12-02 09:53:16 24 4
gpt4 key购买 nike

Chez Scheme/Racket 中let* 是如何定义的?特别是,为什么第一个示例的计算结果为 6...

(let* ((let +) (a (let 2 4)))
a)

...当我的理解来自 exercise 3.1.3let* 可以扩展到嵌套的 let (甚至嵌套的 let*)语句,但是将上面的示例扩展为人们所期望的解释器执行会导致错误吗?

(let ((let +))
(let (a (let 2 4))
a))

实现与练习中的实现是否不同?我预计第一个示例也会由于 let 的新定义而导致错误。

最佳答案

(let* ([let +] [a (let 2 4)]) a)

变成了

(LET ([let +]) (让([a(让2 4)]) 一))

其中 LET 指的是定义 let* 的地方的 let “宏”(正如 Chris 所写:“hygiene”)。

当对其求值时,LET 会将 + 的值绑定(bind)到 let。计算 (let 2 4) 的值,结果为 6(由于 let 的绑定(bind))。然后 6 绑定(bind)到 a。最后对 body 进行求值,由于 a 绑定(bind)到 6,所以结果是 6。

关于scheme - Chez Scheme/Racket 中的 let* 是如何定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22695472/

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