Самый минимальный LISP?

Возможный дубликат:
Сколько примитивов требуется для сборки машины LISP? Десять, семь или пять?

Мне любопытно. Каков самый минимальный LISP, на котором можно было бы построить все дополнительные функции? Игнорируйте эффективность - вопрос приходит просто из места элегантности.

Если вы проснулись на чужой планете и получили указание построить самый минимальный LISP, который впоследствии можно было бы использовать для реализации любой функции, которую вам понравилось, что бы вы включили?

Изменить: Разъяснение. Мое намерение здесь состоять не в том, чтобы начать дискуссию, скорее я подумываю о внедрении минимального LISP, и я хочу понять, насколько минимально я могу идти, сохраняя при этом язык, который я реализую, чтобы завершить Тьюринг и т.д. Если это окажется спорный, я уверен, что я узнаю, что я хотел бы узнать, наблюдая за полемикой.:). Спасибо!

Ответ 2

Питер Норвиг реализовал интерпретатор LISP в 90 строках Python, и в его последующей статье подробно обсуждается то, что вы просите. Хорошо стоит прочитать, ИМХО.

http://norvig.com/lispy.html

У меня такое ощущение, что его специальная форма "упорядочивания" может быть удалена, если только вызовы функций могут принимать произвольное количество параметров.

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

(defun begin (:rest y) (last y))

Но это усложнит функциональное приложение.