Теоретические основы Лисп
Я только начал изучать диалект lisp ( Racket), и я хотел бы знать, есть ли у кого-нибудь ссылка или она может указать мне на теоретические основы семейства языков lisp, под ресурсами я подразумеваю статьи, статьи или книги все, что вы могли придумать.
Предпочтительно указание того, какие математические понятия он использует, как он строит свои операторы, как он их разрешает, объединяет идентичности и так далее. Я читал SEXP в Википедии, но нахожу это немного поверхностным.
Мне интересны основы, потому что мне нравится объяснять, как все работает другим.
Заранее спасибо.
6 ответов
Вы можете начать с самого начала: http://www-formal.stanford.edu/jmc/recursive.html
Я бы также добавил "Следующие 700 языков программирования" Ландена в этот список; где Маккарти раскрывает понятие программ, интерпретирующих другие программы, Лэндин показывает, как одна и та же теоретическая структура может служить основой почти для всех языков программирования.
На самом деле, я думаю, что вполне разумно предположить, что теория LISP-подобных языков - это просто... теория языков программирования.
У Пола Грэма есть несколько хороших мини-статей по истории Lisp: http://www.paulgraham.com/lisp.html
Не пропустите оригинальные лямбда-статьи Гая Стила и Джеральда Суссмана.
- "Лямбда: высший императив"
- "Лямбда: окончательный декларативный"
- "Лямбда: окончательное GOTO"