4

LISP 可以由十个原语构建:原语是:atom、quote、eq、car、cdr、cons、cond、lambda、label、apply。

显然,这些等价于欧几里得几何的 5 个公理。 http://hyperpolyglot.wikidot.com/lisp

谁能解释它们是如何等效的?

4

6 回答 6

8

它只说:

这些基元类似于欧几里得平面几何的 5 个公理。

这不表示等价。据我所知,作者只是打了个比方,想说 LISP 是由它的十个原子构成的,就像欧几里德的平面几何是由它的五个公理构成的一样。

虽然类比很差。

于 2010-07-11T10:55:13.280 回答
3

您不需要所有这些原语。单独使用 LAMBDA 可以完成很多工作,例如整数,...

在现实生活中,Lips 有更多的原语。

于 2010-07-11T11:44:33.947 回答
1

真的吗?好吧,我唯一能想到的是,所有的欧几里得几何都可以从这 5 个公理开始(例如参见元素),就像显然所有的 LISP 都可以从这十个原语中构建一样。

对于懒惰的好奇,这里是欧几里得五个公理的一个措辞,来自维基百科

  • 从任意一点到任意一点画一条直线。
  • 在一条直线上连续地产生[延伸]一条有限的直线。
  • 描述一个具有任意中心和距离[半径]的圆。
  • 即所有直角彼此相等。
  • 平行假设:如果一条直线落在两条直线上,使同一边的内角小于两个直角,两条直线如果无限产生,则在小于两个直角。
于 2010-07-11T10:51:49.917 回答
1

声称不是平面几何中的定理可以使用 Lisp 原语来证明。这么想就是错过了类比。我重写了这句话,希望能阻止人们这样想。正确的类比并不新鲜。格雷厄姆的论文开篇就观察到麦卡锡“为编程所做的事情就像欧几里德为几何学所做的那样”。

麦卡锡在设计 Lisp 时就想到了数学推理系统。在他 1979 年对 Lisp 历史的回顾中,他指出“现在证明纯 Lisp 程序符合其规范比任何其他广泛使用的编程语言更容易”。这是因为 Lisp 原语具有引用透明性,这是它们与数学符号共有的属性。可以由原语实现的任何程序都共享该属性。当你必须对你的程序进行推理时,数学上的整洁会带来好处。

库里-霍华德对应关系使“证明就是程序”的概念更加精确。

参考:

麦卡锡谈“数学整洁”

库里-霍华德通信(维基百科)

Lisp 的根源,保罗·格雷厄姆

参考透明度(维基百科)

于 2010-07-12T14:53:02.480 回答
1

它们的可比性在于它们足以实现所有的 Lisp,就像你可以从这些公理推导出所有的平面几何一样。但它们与几何无关。所以这不是等价的,只是一般的相似性。

(欧几里得公理的一个更有趣的特性是你可以否定其中一个并得到一个不同的系统,这仍然非常有用(非平面几何学)。但我不确定 Lisp 原语是否同样适用,并且我怀疑作者有这个想法。)

于 2010-07-11T10:58:11.447 回答
1

Alan Kay 说得好:麦克斯韦软件方程

“……这是我读研究生时的重大启示——当我终于明白 Lisp 1.5 手册第 13 页底部的半页代码本身就是 Lisp 时。这些是“麦克斯韦方程组”软件!” 这就是我可以用几行代码完成的整个编程世界。”

来自与艾伦·凯的对话

于 2015-02-05T14:11:07.627 回答