gpt4 book ai didi

scheme - 方案/ Racket 中letrec的含义

转载 作者:行者123 更新时间:2023-12-02 08:25:10 28 4
gpt4 key购买 nike

据我了解,以下内容:letlet*letrecletrec*是计划/ Racket 中使用的合成糖。

现在,如果我有一个简单的程序:

(let ((x 1)
(y 2))
(+ x y))

翻译为:

((lambda (x y) (+ x y)) 1 2)

如果我有:

(let* ((x 1)
(y 2))
(+ x y))

翻译为:

((lambda (x) ((lambda (y) (+ x y))) 2) 1)

现在,对于我的第一个问题,我理解了 letrec 表达式的含义,它使人们能够在 let 中使用递归,但我不明白它到底是如何完成的。 letrec 翻译成什么?

例如,什么会

(letrec ((x 1)
(y 2))
(+ x y))

翻译成?

第二个问题与 letrec* 类似 - 但对于 letrec* 我不明白它与 letrec 究竟有何不同?另外,letrec* 表达式将被翻译成什么?

最佳答案

请参阅论文“修复 Letrec:忠实而高效的实现《Scheme 的递归绑定(bind)构造》,作者:Oscar Waddell、Dipanwita Sarkar,以及R.肯特·戴布维格。

本文从一个简单的版本开始,然后解释更复杂的扩展:

https://www.cs.indiana.edu/~dyb/pubs/fixing-letrec.pdf

关于scheme - 方案/ Racket 中letrec的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50627845/

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