可能重复:
How many primitives does it take to build a LISP machine? Ten, seven or five?
我很好奇。什么是最小的LISP,可以在其上构建所有进一步的功能?忽视效率 - 问题来自一个优雅的地方。
如果你在外星球上醒来,并被指示建立最小的LISP,你可以在以后建立它来实现你喜欢的任何功能,你会包括什么?
编辑:澄清。我的意图不是开始辩论,而是我正在考虑实施一个最小的LISP,我想要了解我可以去的最小化,同时仍然允许我实施的语言是图灵完整等等。如果这证明是有争议的我我相信我会从观察争议中学到我想学到的东西。 :)。谢谢!
答案 0 :(得分:12)
由Paul Graham提供,这里是a Common Lisp implementation of John McCarthy's original LISP:
它假设为quote,
atom
,eq
,cons
,car
,cdr
和cond
,并定义{ {1}},null
,and
,not
,append
,list
,pair
,assoc
,{{1 }和eval
。
答案 1 :(得分:4)
Peter Norvig在90行Python中实现了一个LISP解释器,随后的文章详细讨论了你所要求的内容。非常值得一读,恕我直言。
我觉得如果只有函数调用可以接受任意数量的参数,他的“排序”特殊形式就会被删除。
(defun last (lst)
(if (cdr lst)
(last (cdr lst))
(car lst)))
(defun begin (:rest y) (last y))
但这会使功能应用变得复杂。