Подтвердить что ты не робот

Что лучше Lisp при разборе?

Я хотел бы использовать интерпретатор Lisp на диалекте Lisp в основном как учебное упражнение. Единственное, что меня выбрасывает, - это то, как много вариантов в этой области. Прежде всего, я немного заинтересован в изучении некоторых из Lisps, которые были вокруг (например, Scheme или Common Lisp). Я не хочу использовать Clojure для этого, потому что я уже использовал его.: -)

Итак, один из вариантов лучше, чем другие при разборе? И вы думаете, что это хорошая идея, чтобы сказать схему реализации в Common Lisp (или наоборот)? Или будет ли разница между этими двумя, чтобы выбросить меня?

И если это имеет значение, я бы хотел что-то кросс-платформенное. У меня есть ПК с ОС Windows, Mac и Linux, и я мог бы написать это на любом из них.

4b9b3361

Ответ 1

Есть несколько книг об этом:

Все вышеперечисленные книги настоятельно рекомендуется, хотя анатомия Lisp является старой, труднодоступной и трудночитаемой.

Как схема, так и общий Lisp отлично подходят для вашей задачи.

Реализация Common Lisp - большая задача, так как язык больше. Обычно один реализует Common Lisp лучше в Common Lisp, так как существуют Common Lisp библиотеки, которые могут быть использованы для новых Common Lisp реализаций.; -)

Ответ 2

PLT Scheme - отличная платформа для экспериментов с языками программирования, особенно с языками Lisp. PLT имеет расширяемый синтаксический анализатор (обычно называемый читателем на Схеме), который предоставляет макросы считывателя для управления встроенным синтаксисом; или вы можете полностью заменить читателя своим. Если вы предпочитаете использовать традиционные синтаксические анализаторы и лексеры lex/yacc, PLT поставляется с модулем анализатора, который также предоставляет их. В качестве бонуса он имеет полную документацию и репозиторий для сторонних пакетов (две вещи, которые отсутствуют во многих схемах).

Эталонная реализация Arc (arclanguage.org) является довольно простой и удобочитаемой пример построения языка, который компилируется на Схему. Он использует PLT-ридер в основном, с несколькими макросами считывателя, чтобы изменить биты синтаксиса Схемы, которые отличаются от Arc. Также существует реализация JavaScript, доступная из репозитория пакетов PLT (planet.plt-scheme.org), если вы хотите увидеть, как реализовать язык не Lisp.