最小的LISP?

Mik*_*eC8 16 lisp scheme programming-languages

可能重复:
构建LISP机器需要多少个原语?十,七,五?

我好奇.什么是最小的LISP,可以在其上构建所有进一步的功能?忽视效率 - 问题来自一个优雅的地方.

如果你在外星球上醒来并被指示构建最小的LISP,你可以在以后建立它来实现你喜欢的任何功能,你会包括什么?

编辑:澄清.我的意图不是开始辩论,而是我正在考虑实施一个最小的LISP,我想要了解我可以去的最小化,同时仍然允许我实施的语言是图灵完整等等.如果这证明是有争议的我我相信我会从观察争议中学到我想学到的东西.:).谢谢!

gri*_*ton 12

Paul Graham提供,这是John McCarth的原始LISP的Common Lisp实现:

它假定quote, atom,eq,cons,car,cdr,和cond,并定义null,and,not,append,list,pair,assoc,eval,evconevlis.


Jan*_*der 5

Peter Norvig 用 90 行 Python 实现了一个 LISP 解释器,他随后的文章详细讨论了您要问什么。非常值得一读,恕我直言。

http://norvig.com/lispy.html

我有一种感觉,如果只有函数调用可以采用任意数量的参数,他的“排序”特殊形式可以被删除。

(defun last (lst)
  (if (cdr lst) 
      (last (cdr lst))
      (car lst)))

(defun begin (:rest y) (last y))
Run Code Online (Sandbox Code Playgroud)

但这会使函数应用复杂化。