- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Chez Scheme/Racket 中let*
是如何定义的?特别是,为什么第一个示例的计算结果为 6...
(let* ((let +) (a (let 2 4)))
a)
...当我的理解来自 exercise 3.1.3是 let*
可以扩展到嵌套的 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/
我最近一直在使用鸡方案,我觉得它真的很好,有人建议 chez 方案是最快的方案实现。所以我想尝试一下,但我不确定如何像鸡计划一样从 chez 创建编译的二进制文件。 最佳答案 正如 Sylwester
(lambda (head . rest) (...)) 我在尝试学习一些方案时在网上遇到了这段代码,但我找不到任何有用的解释。 这是什么意思?它是像 ML 中那样的某种模式匹配吗?(顺便说
(lambda (head . rest) (...)) 我在尝试学习一些方案时在网上遇到了这段代码,但我找不到任何有用的解释。 这是什么意思?它是像 ML 中那样的某种模式匹配吗?(顺便说
既然 Chez Scheme 是开源的,我想知道它在性能方面与 Racket 和其他 Scheme 或语言相比如何,以便人们可以在自己的项目中做出明智的选择。 很遗憾,我找不到任何相关的基准。 我发现
Chez Scheme 是否提供标准的 macroexpand 实现?如果没有,是否存在一些合适的替代品? 最佳答案 标准是什么意思? expand 扩展提供给它的表单。 关于scheme - Che
我试图在 chez 方案中查找有关 andmap 和 ormap 操作的信息。 还是不明白这些操作的用途,和map有什么区别。 最佳答案 在伪方案中, (andmap f xs) == (fold
我不知道该怎么做。在以前的实现中,read-line 是可用的,但由于某些原因它不在 Chez 中。 我如何只读取一行输入? 最佳答案 Chez Scheme 是 R6RS 的实现。使用 R6RS g
我是 Chez 的新手,考虑到现有的各种维护和未维护的存储库,我只是想弄清楚一些情况。 是否有一个通常首选的源代码库来获取 R6RS SRFI 库(专门用于 Chez Scheme)? 我知道http
如果创建一个 chez 方案 ex,对 lista_de_elemente 中的所有元素进行求和 (define lista_de_elemente (list 2 4 1 12 32 3 34 12
我正在努力通过 Dybvig's "The Scheme Programming Language"书。我正在使用 Chez Scheme 9.4.1作为我的 REPL。我正在使用 Geiser 在
我正在运行 Chez Scheme 9.5 并试图在 图书馆。下面是一个例子: (library (forlib) (export for) (import (rnrs (6))) (de
我想编写一个宏来创建用于隐藏更冗长的 lambda 表达式的速记语法,但我正在努力理解如何编写宏(我意识到这是反对使用它们的论据)。 鉴于这个例子: (define alist-example '
Chez Scheme/Racket 中let* 是如何定义的?特别是,为什么第一个示例的计算结果为 6... (let* ((let +) (a (let 2 4))) a) ...当我的理
How to install Petite Chez Scheme on Ubuntu? 我运行 Ubuntu 15.10 并尝试为 Linux 安装 pcsv8.4-a6le.tar.gz(非线程,
我尝试编译和安装 Chez Scheme 的 Racket 后端变体编译器,因为它现在似乎支持 aarch64 Arm 64 架构,不像 mainline Chez Scheme这仍然仅限于 32 位
我想为 printf 写一个 FFI Chez Scheme 中 C 的函数使用 foreign-procedure .但是我不知道应该把什么作为签名,因为 printf 中的最后一个参数函数是一个可
我正在尝试安装 Chez Scheme 9.4在 Linux Mint LMDE 系统上。 Chez Scheme 需要 GNU make、gcc、ncurses 的头文件和库,以及 X window
这是我使用 Scheme 教授的入门编程类(class)中的个人挑战,但我对 Python 示例同样满意。 我已经在scheme中实现了模幂的二进制方法如下: (define (pow base ex
我是一名优秀的程序员,十分优秀!