10 примитивов LISP, аналогичных 5 аксиомам евклидовой геометрии? - PullRequest
4 голосов
/ 11 июля 2010

LISP может быть построен из десяти примитивов: примитивы: atom, quote, eq, car, cdr, cons, cond, lambda, label, apply.

Видимо, они эквивалентны 5 аксиомамЕвклидова геометрия.http://hyperpolyglot.wikidot.com/lisp

Может кто-нибудь объяснить, как они эквивалентны?

Ответы [ 6 ]

8 голосов
/ 11 июля 2010

Это только говорит:

Примитивы аналогичны 5 аксиомам евклидовой плоской геометрии.

Что не выражает эквивалентности.Насколько я могу сказать, автор просто проводит аналогию и хочет сказать, что LISP построен из его десяти атомов, точно так же, как плоская геометрия Евклида построена из его пяти аксиом.

Плохая аналогия.

3 голосов
/ 11 июля 2010

Тебе не нужны все эти примитивы.Многое можно сделать только с помощью LAMBDA, например, целые числа, ...

В реальной жизни у Лиспов есть больше примитивов.

1 голос
/ 05 февраля 2015

Алан Кей хорошо говорит об этом: уравнения Максвелла !

"... это было большим откровением для меня, когда я был в аспирантуре школа - когда я наконец понял, что половина страницы кода на Нижняя часть страницы 13 руководства по Lisp 1.5 была сама по себе Lisp. Эти были «уравнения программного обеспечения Максвелла!» Это целый мир программирование в несколько строк, которые я могу положить руку. "

С Разговор с Аланом Кей

1 голос
/ 12 июля 2010

Утверждение НЕ в том, что теоремы в плоской геометрии могут быть доказаны с использованием примитивов Lisp.Думать, что значит пропустить аналогию.Я переписал предложение, чтобы, я надеюсь, отговорить людей думать об этом.Правильная аналогия не нова;Статья Грэма начинается с наблюдения, что Маккарти «сделал для программирования нечто похожее на то, что Евклид сделал для геометрии».

Системы математических рассуждений были в голове Маккарти, когда он разрабатывал Лисп.В своей ретроспективе 1979 года по истории Лисп он отмечает, что «теперь легче доказать, что программы на чистом Лисп соответствуют их спецификациям, чем для любого другого широко используемого языка программирования».И это потому, что примитивы Lisp имеют ссылочную прозрачность, свойство, которое они разделяют с математической нотацией.Любая программа, которая может быть реализована примитивами, разделяет свойство.Математическая аккуратность приносит дивиденды, когда вам приходится рассуждать о своей программе.

Концепция «доказательство - это программа» уточняется с помощью соответствия Карри-Говарда.

Ссылки:

Маккарти о «математической аккуратности»

Переписка Карри-Ховарда (Википедия)

Корни Лиспа, Пол Грэм

Ссылочная прозрачность(wikipdia)

1 голос
/ 11 июля 2010

Они сравнимы в том, что они достаточны для реализации всего Лиспа, так же, как вы можете вывести всю планарную геометрию из этих аксиом. Но они не имеют ничего общего с геометрией. Так что это не эквивалентность, а общее сходство.

(Более интересным свойством евклидовых аксиом является то, что вы можете отрицать одну из них и получить другую систему, что, тем не менее, очень полезно (неплоская гемометрия). Но я не уверен, верно ли это для Лиспа примитивы, и я сомневаюсь, что автор имел это в виду.)

1 голос
/ 11 июля 2010

В самом деле? Ну, единственное, о чем я могу думать, это то, что вся евклидова геометрия может быть получена, начиная с этих 5 аксиом (например, см. Элементы ), точно так же, как, очевидно, весь LISP может быть построен из этих десяти примитивов .

Для ленивых любопытно вот одна фраза из пяти аксиом Евклида, из Википедия :

  • Чтобы нарисовать прямую линию из любой точки в любую точку.
  • Для получения [продолжения] конечной прямой линии непрерывно по прямой.
  • Для описания круга с любым центром и расстоянием [радиус].
  • что все прямые углы равны друг другу.
  • Параллельный постулат: если прямая линия, падающая на две прямые, делает внутренние углы с одной и той же стороны меньше двух прямых углов, две прямые линии, если они образуются бесконечно, встречаются на той стороне, на которой расположены углы меньше двух прямых углов.
...