#  Re: LISP
Andrew Lobanov (station13, 1) → Difrex  –  09:39:26 2015-12-02

Difrex> Глянул на CL -- это прямо то, что нужно! Синтаксис еще долбанутей перла, я такое люблю! Начал читать Practical Common Lisp. Но это все нудно. Я люблю учить что-то новое через реальные задачи, а не базу ЦД.

Базу ЦД из PCL рекомендую всё таки разобрать. Хорошее погружение, так сказать.

Difrex> Такой вот очень нубский вопрос: как скомпилить файл в нативный бинарь? Как запустить файл в интерпретаторе(не в REPL (load "filename"))?

Нативный бинарь у лиспа это очень своеобразная штука. По крайней мере у SBCL. Это по своей сути упакованная в один файл лисп-машина и core dump всего загруженного на момент "компиляции". В итоге бинари толстые.

На примере SBCL это выглядит так:

====
* (sb-ext:save-lisp-and-die "bin-name" :executable t :top-level 'function-name)
====


Всё, что выполняется вне функций упихиваешь в функцию (например (defun main () ...)). Тогда :top-level 'main будет. А :executable отвечает за конечный результат: бинарь дампа или лисп-машину туда присобачить.

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

А загрузка осуществляется посредством (load "filename") да =)

Ещё рекомендую посмотреть https://www.quicklisp.org/ это очень годная штука для подгрузки и обновления систем (что-то типа библиотек). Очень удобно.

PS: А синтаксис не такой уж и наркоманский. Зато позволяет легко осуществлять работу макросов и вообще. Ведь никто не запрещает передавать функции как данные, например.