2
|
DVK · 技术社区 · 14 年前 |
![]() |
1
3
我不完全确定,所以如果你们中有人更了解我,请纠正我。 我同意其他两个答案,进一步解释,奎因是: γ-G 其中Y是 Y fixed-point combinator (或任何其他固定点组合器),这意味着 lambda calculus : y g= g(y g) 现在,很明显,我们需要代码是数据,而g是一个将打印其参数的函数。 综上所述,我们需要构建这样一个奎因函数、打印函数、定点组合器和按名称调用的评估策略。 满足这一条件的最小语言是来自 Iota and Jot 家庭。 |
![]() |
2
3
像这样的语言
Io Programming Language
还有一些允许将代码视为数据。在树遍历系统中,这通常允许语言实现者将抽象语法树作为第一类公民公开。在IO的情况下,这就是它所做的。AST是面向对象的,围绕消息对象建模,并创建一个特殊的sentinel来表示当前正在执行的消息;这个sentinel被调用
不管怎样,我只是忍不住和你分享这个话题。以上当然可以使写奎因容易,但不这样做当然不排除容易创造奎因。 |
![]() |
3
2
我不确定这是否是一个实用的答案,但有一些有用的理论 可计算性理论 . 尤其是固定点和 Kleene's recursion theorem 可以用来写奎因。显然,这个理论可以用来写Lisp中的奎因(如维基百科页面所示)。 |
![]() |
dallin · 数组中的逗号运算符是否有名称? 11 年前 |