LISP 可以由十个原语构建:原语是:atom、quote、eq、car、cdr、cons、cond、lambda、label、apply。
显然,这些等价于欧几里得几何的 5 个公理。 http://hyperpolyglot.wikidot.com/lisp
谁能解释它们是如何等效的?
LISP 可以由十个原语构建:原语是:atom、quote、eq、car、cdr、cons、cond、lambda、label、apply。
显然,这些等价于欧几里得几何的 5 个公理。 http://hyperpolyglot.wikidot.com/lisp
谁能解释它们是如何等效的?
它只说:
这些基元类似于欧几里得平面几何的 5 个公理。
这不表示等价。据我所知,作者只是打了个比方,想说 LISP 是由它的十个原子构成的,就像欧几里德的平面几何是由它的五个公理构成的一样。
虽然类比很差。
您不需要所有这些原语。单独使用 LAMBDA 可以完成很多工作,例如整数,...
在现实生活中,Lips 有更多的原语。
声称不是平面几何中的定理可以使用 Lisp 原语来证明。这么想就是错过了类比。我重写了这句话,希望能阻止人们这样想。正确的类比并不新鲜。格雷厄姆的论文开篇就观察到麦卡锡“为编程所做的事情就像欧几里德为几何学所做的那样”。
麦卡锡在设计 Lisp 时就想到了数学推理系统。在他 1979 年对 Lisp 历史的回顾中,他指出“现在证明纯 Lisp 程序符合其规范比任何其他广泛使用的编程语言更容易”。这是因为 Lisp 原语具有引用透明性,这是它们与数学符号共有的属性。可以由原语实现的任何程序都共享该属性。当你必须对你的程序进行推理时,数学上的整洁会带来好处。
库里-霍华德对应关系使“证明就是程序”的概念更加精确。
参考:
库里-霍华德通信(维基百科)
Lisp 的根源,保罗·格雷厄姆
参考透明度(维基百科)
它们的可比性在于它们足以实现所有的 Lisp,就像你可以从这些公理推导出所有的平面几何一样。但它们与几何无关。所以这不是等价的,只是一般的相似性。
(欧几里得公理的一个更有趣的特性是你可以否定其中一个并得到一个不同的系统,这仍然非常有用(非平面几何学)。但我不确定 Lisp 原语是否同样适用,并且我怀疑作者有这个想法。)
Alan Kay 说得好:麦克斯韦软件方程!
“……这是我读研究生时的重大启示——当我终于明白 Lisp 1.5 手册第 13 页底部的半页代码本身就是 Lisp 时。这些是“麦克斯韦方程组”软件!” 这就是我可以用几行代码完成的整个编程世界。”
来自与艾伦·凯的对话