Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lisp &引用;“方案”的微型手册;?_Lisp_Scheme - Fatal编程技术网

Lisp &引用;“方案”的微型手册;?

Lisp &引用;“方案”的微型手册;?,lisp,scheme,Lisp,Scheme,鉴于LISP显然可以用“LISP微手册”的“10条规则”来表达(这是真的吗?),对Scheme是否也有类似的简洁描述 我认为,在43页的篇幅中,对Scheme最好的简洁描述是,但我是一个普通的Lisp程序员。麦卡锡的“10条规则”基本上是操作语义的早期形式。本文档来自1978年,是在第一份Scheme报告发表3年后编写的,其中Abelson&Steele提取了LISP的简单部分来创建Scheme。Scheme和LISP都是移动目标,因此您必须通过说“这与当时的方案相匹配”来限定比较。我声称,您可

鉴于LISP显然可以用“LISP微手册”的“10条规则”来表达(这是真的吗?),对Scheme是否也有类似的简洁描述

我认为,在43页的篇幅中,对Scheme最好的简洁描述是,但我是一个普通的Lisp程序员。

麦卡锡的“10条规则”基本上是操作语义的早期形式。本文档来自1978年,是在第一份Scheme报告发表3年后编写的,其中Abelson&Steele提取了LISP的简单部分来创建Scheme。Scheme和LISP都是移动目标,因此您必须通过说“这与当时的方案相匹配”来限定比较。我声称,您可以认为本微手册同样适用于Scheme和LISP

在FWIW中,麦卡锡的功能评估规则(见下文)使用了“在原始环境中”这一短语,这似乎要求捕获避免替换,因此需要词法范围界定

“9.值((λ(v1…vn)e)e1…en)与值e相同,但在变量v1…vn取 原始环境中表达式e1…e1的值“[emphasis mine]


是的,这同样适用于该计划。记住,Scheme和Common lisp有不同的理念,但都是基于lisp引入的概念。但是,例如,AFAIK,Common(?)lisp有动态范围,Scheme有词汇范围(?),那么这一区别与“10条规则”还不清楚吗?(我只是浏览了一下,因为我不确定最终是否需要它们)@akavel:Common Lisp默认为词法作用域,但可以通过适当的声明引入动态作用域(对使用DEFVAR或DEFPARAMETER绑定的符号自动完成);我试图分析这句话,但现在还不能理解:/哪是原始环境?e_1…e_n在“原始环境”中有任何值吗?原始环境是发生函数调用的环境。所指的数值是评估e_1。。。在这些环境中。一个简单的例子是(f(+n1)),其中重要的是n在当前环境中获得n的值,而不是在f的主体中定义的值。更有趣的情况发生在类似(f(lambda()n))的情况下,我们再次希望n在当前环境中获得n的值,即使变量引用还不能减少到一个值。希望我有更多的空间/更好的格式…接下来的评论:麦卡锡的文本在这里并不是很严密;要找到更精确的规范,请查看lambda演算或更高版本的Scheme报告。