问题标签 [metacircular]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2078 浏览

scheme - 元循环评估器

我必须用scheme写scheme..安静有趣,但情况就是这样。无论如何,这是一个尝试使用我可能使用的所有 proucedors 编写“lambda”表达式的示例,并且在编写“Let”表达式时我也需要帮助。如何使用类似的方式将“Let”表达式转换为 lambda?谢谢。

0 投票
2 回答
582 浏览

lisp - 元循环评估器,实现环境

我正在尝试根据 Harold Abelson 和 Gerald Jay Sussman 着名的“计算机程序的结构和解释”一书在 Scheme 中实现 Metacircular Evaluator。

http://mitpress.mit.edu/sicp/full-text/sicp/book/node79.html , http://mitpress.mit.edu/sicp/full-text/sicp/book/node80.html

作者建议以这种方式设置环境:

但是,我不明白为什么

应该像我们在Scheme中所期望的那样工作,因为据我所知,Scheme默认通过值传递变量来函数,因此在两次应用“define-variable!”之后 对于initial-env,initial-env不会每次都改变,setup-environment函数会返回extend-environment返回的值。

我的理解错误在哪里,请您指教?

先感谢您!

0 投票
1 回答
215 浏览

c# - 是否有任何开源元循环 CLR 实现?

.Net CLR 是否有任何开源元循环实现?我知道 MONO 并不完全是用 C# 编写的,所以我一直在寻找某种完全用 C# 实现 .Net CLR 的开源项目(类似于用于 JVM 的Maxine),以便更好地理解 .Net CLR。

0 投票
1 回答
885 浏览

interpreter - 什么是元循环解释器

同一个人可以向我解释什么是元循环解释器吗?维基百科上的定义是:

元循环评估器是自解释器的一种特殊情况,其中父解释器的现有设施直接应用于正在解释的源代码,而无需任何额外的实现。

但是我不知道如何理解句子:“自解释器,其中父解释器的现有设施直接应用于正在解释的源代码”。

在stackoverflow上,我找到了答案,说元循环解释器是没有任何附加功能的自我解释器,所以我很困惑。

提前致谢

0 投票
2 回答
5726 浏览

scheme - Metacircular evaluator of Scheme in Dr. Racket

When I am trying to run an evaluator in Dr. Racket, it shows the error: 'Module Language: there can only be one expression in the definitions window'.

Obviously there are multiple definitions in this window, an evaluator has multiple definitions, so how can I run these multiple definitions ? or is there any other method to run the evaluators.

Any help would be appreciated.

0 投票
1 回答
238 浏览

haskell - 您将如何抽象出这对“形状相似”数据类型中的样板文件

一般问题

我有一对数据类型,它们是表示同一事物的两种不同方式,一种在 String 中记录变量名,而另一种在 Int 中记录变量名。目前,它们都已定义。但是,我只想描述第一种表示,而第二种表示将由某种关系生成。

具体例子

具体来说,第一个是 STLC 术语全域的用户定义版本,而第二个是同一事物的 de Bruijn 索引版本:

已经在Termand上定义了一个关系TermIn

请注意,由于原始名称Term存储在 中,因此到和返回TermIn之间存在一对一的映射。TermTermIn

重述问题

现在您可以看到涉及多少样板,我想使用我定义的一些优雅的抽象Term和类型输出的一些函数来摆脱它TermIn。只是为了提供更多上下文,我正在为不同的 lambda 演算公式创建许多这样的外部和 de Bruijn 表示对,并且一对一的关系适用于所有这些。

0 投票
1 回答
388 浏览

scheme - 方案中的元循环解释器while循环

为什么这个 while 循环不适用于元循环解释器。我如何在我的交互窗口中运行它?

0 投票
2 回答
199 浏览

scheme - Scheme Meta Circular Evaluator 中的模式匹配功能

我正在尝试将模式匹配功能添加到现有方案元循环评估器(这是家庭作业),我对说明的措辞有点迷茫。我希望在这方面更熟练的人可以帮助我解释这一点。

match 的语法应如下所示:(match a ((p1 v1) (p2 v2) (p3 v3)))

它可以用来查找长度,如下所示:

函数中的模式语言应包含数字常量、带引号的常量、变量和 cons。如果模式用尽但没有找到匹配项,则应抛出错误。

我以为我理解了模式匹配的概念,但是以这种方式在函数中实现它让我有点失望。有人愿意解释上面的语法在做什么(特别是上面的长度如何使用匹配),以便我可以更好地理解这个函数应该做什么?

0 投票
4 回答
2532 浏览

lambda - 艾伦凯的评估/应用爱因斯坦时刻

Alan Kay 说,仔细阅读代码并在 Lisp 1.5 手册第 13 页的代码中找到第一个也是唯一一个错误,帮助他更好地理解计算机科学 100 倍

有问题的代码是eval&的第一个版本,apply它看起来很像现代 lisp(我知道)。

由于正确答案可能已知但丢失(我的 google-fu 很不错,我至少搜索了 20 分钟)我将奖励第一个正确答案(我将查看编辑时间,所以不要试图作弊)尽快获得 250 点赏金。

我建议其他人也为赏金做出贡献,记得从上面的视频中艾伦凯说这些东西让人想起爱因斯坦发现相对论时所处的环境。

文中的代码是用 M-Expressions 编写的。我正在开发一个翻译器,将 M 表达式转换为 S 表达式(lisp 代码)@ https://github.com/Viruliant/MccarthyMCEval-1.5

无论如何,这里是第 13 页的翻译报价:

0 投票
1 回答
5714 浏览

clojure - 尝试调用未绑定的 fn,而我已经定义了它

我正在尝试将 SICP 的元循环评估器转换为 Clojure。在setup-environment调用extend-environment中无法编译,因为我收到错误“尝试调用未绑定的 fn”。以下是部分代码:

当我评估该extend-environment方法时,我收到以下错误:

  1. 由 java.lang.IllegalStateException 引起
    尝试调用未绑定的 fn:
    #'scheme-evaluator/extend-environment
    Var.java:43 clojure.lang.Var$Unbound/throwArity
    AFn.java:40 clojure.lang.AFn/invoke
    scheme- evaluator.clj: 277 方案评估器/eval7808

我认为我没有提供正确类型的参数,或者我没有创建正确类型的函数。我尝试了各种匿名方法的变体,并在括号中传递或不传递,但我无法编译它。

有谁知道这个错误的原因是什么,我该如何解决?