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

LISP В Small Pieces - лучшая среда LISP для запуска кода?

Christian Queinnec написал шедевр под названием LISP In Small Pieces, в котором представлены одиннадцать LISP интерпретаторов и два компилятора LISP.

Когда вы переходите к загрузке кода с веб-сайта здесь - у него есть комментарий:

The programs of this book are available on the net. 
These programs used to run with some Scheme systems around 1994.

Любая идея:

(a) Какие системы Схемы выполнялись в то время и, что более важно,

(б) Какие системы Схемы будут работать сегодня?

4b9b3361

Ответ 1

Там много программ. Я сделал несколько тестов, чтобы понять, насколько хорошо я могу ответить на этот вопрос, не пробовав их индивидуально. В tarball есть 131 файл с расширением ".scm". Однако существуют программы Scheme с другими расширениями, такими как .bgl. Поэтому я начал поиск файлов, содержащих "L я S P" в первых пяти строках. Это дает 173 файла. Я попытался запустить все это на моей предпочтительной реализации Схемы. 31 из них работают без ошибок. Почти все они находятся в каталоге "src". Таким образом, языковые программы действительно кажутся специфичными для языка. Посмотрите на один из файлов src/files, которые не были выполнены, "chap9z.scm". Он задыхается от define-abbreviation. Я не знаю происхождения этого символа, но он не определен нигде в хитрости. Но все его применения могут выполняться guile syntax-rules.

Ответ 2

Некоторые реализации Схемы, существовавшие в 1994 году, по-прежнему поддерживаются и поддерживаются: Схема 48, Chez Scheme, Gambit, Bigloo, Схема MIT и SCM.

Вероятно, код из LiSP будет запущен в других современных системах Scheme, таких как Guile или Larceny.

Лично я бы рекомендовал использовать Racket. Скорее всего, большая часть кода будет работать в #lang racket без каких-либо изменений, и нет необходимости использовать [] (но ваш код может быть проще читать:). Вещи, которые не работают, вероятно, легко исправить, и вы также можете использовать реализацию языка R5RS, предоставляемую Racket, которая, скорее всего, будет работать для всего кода.

Ответ 3

(a) Какие системы Схемы выполнялись в то время

Файл Makefile в исходный архив с сайта автора содержит цели для запуска кода под bigloo, elk, gambit, mit-scheme, schem2c, и scm.

В файле Makefile упоминаются SCM 4e1 и Biglo 1.9d как известные рабочие версии, хотя я сам их не тестировал. Я не нашел упоминания конкретных версий для других схем.

(б) Какие системы Схемы будут работать сегодня?

Код в этот github repo обновлен, так что почти все тесты в комплекте с тестовым набором проходят с текущим (начиная с 06/2014) версии bigloo, gambit и mit-scheme.

Если вы просто хотите иметь возможность запускать код и следовать вместе с книгой, одна из этих схем должна работать на вас.

[полное раскрытие: я являюсь владельцем репо, и я - схема noob. Код в репо WOMM сертифицирован, но ваш пробег может отличаться.]

Если, с другой стороны, вы не довольны использованием схемы bigloo/gambit/mit-схемы, здесь не должно быть слишком сложно добавить поддержку для guile/racket/insert-favorite-scheme. Используйте один из файлов book.* в качестве отправной точки, например. gambit/book.scm или mitscheme/book.mit. Если вы можете загрузить версию book.scm для загрузки в свою любимую схему, посмотрите на цель test.interpreters make и, наконец, цель grand.test, чтобы проверить, что все работает как ожидалось.

Ответ 4

Вложенный файл README гласит:

Эти файлы были протестированы с помощью интерпретатора Scheme, дополненного         драйвер тестового набора (tester.scm),         макросы define-syntax и define-abbreviation (используя                 Пакет синтаксического пакета Dybvig),         и объектная система: Meroonet (meroonet.scm).

Можно использовать Bigloo, Scheme- > C, Gambit, Elk или SCM. Первые три лучше, поскольку может быть построен специализированный интерпретатор, который содержит скомпилировал Meroonet и скомпилировал гигиенические макросы.

Ответ 5

По-видимому, Appleby опубликовала обновленную версию исходного кода. Ракетка отсутствует, хотя) =

См. https://github.com/appleby/Lisp-In-Small-Pieces