gpt4 book ai didi

scheme - 为什么 Scheme 不支持一流的环境?

转载 作者:行者123 更新时间:2023-12-03 13:30:40 25 4
gpt4 key购买 nike

我一直在阅读 SICP(计算机程序的结构和解释),并且非常兴奋地发现了这种奇妙的特殊形式:“make-environment”,他们演示了将其与 eval 结合使用作为编写模块化代码的一种方式(摘录来自第 4.3 节“包”):

(define scientific-library
(make-environment
...
(define (square-root x)
...)))

然后他们展示了它是如何工作的
((eval 'square-root scientific-library) 4)

在他们的例子中,他们接着准确地展示了我想要的用法——一种优雅的、极简主义的方式在方案中做“OO”风格......他们“cons”在一起一个“type”,这实际上是什么由“make-environment”特殊形式(即 vtable)和 arg(“状态”)返回...

我非常兴奋,因为这正是我一直在寻找的一种在 Scheme 中“按符号”进行多态调度的方法,而无需编写大量显式代码或宏。

即我想创建一个“对象”,它有两个函数,我在不同的上下文中调用它们......但我不想用“car”和“cdr”来引用它们,我想同时声明并通过它们的符号名称来评估它们。

无论如何,当我读到这篇文章时,我迫不及待地想回家试试。

想象一下,当我在 PLT 计划和 Chez 计划中遇到以下情况时,我会感到失望:
> (make-environment (define x 3))
Error: invalid context for definition (define x 3).
> (make-environment)
Error: variable make-environment is not bound.

SICP 中提到的“make-environment”发生了什么?这一切看起来如此优雅,正是我想要的,但似乎任何现代 Scheme 解释器都不支持它?

理由是什么?仅仅是“make-environment”的名称不同吗?

更多信息稍后找到

我看了一下在线版本:

http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-28.html#%_sec_4.3

我正在读的是SICP的第一版。第二版似乎用关于非确定性编程和“amp”运算符的部分取代了对包的讨论。

最佳答案

他们之所以这样写,是因为 MIT Scheme 实际上确实拥有一流的环境,并且大概这就是作者计划用它来教授他们的类(class)(因为这本书是在 MIT 写的)。

查看 http://groups.csail.mit.edu/mac/projects/scheme/

然而,我注意到 MIT Scheme 虽然仍然在积极开发中,但缺乏真正现代的 Scheme 所具备的许多特性,例如外来函数接口(interface)或 GUI 支持。您可能不想将它用于严肃的软件开发项目,至少不会单独使用它。

关于scheme - 为什么 Scheme 不支持一流的环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/617325/

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