Компилировать/запускать общий LIsp с терминала Mac

Есть ли способ сделать это? Я использовал Slime для изучения Lisp, и я хотел бы начать строить большие проекты, что означает (я думаю), что мне придется начинать писать некоторые .lisp файлы.

Ответ 1

Я думаю, что ваши лучшие ставки для Mac Common LISP - это LispWorks Personal Edition или SBCL.

Предполагая, что у вас установлен SBCL, вы можете создать .lisp файл с помощью текстового редактора (emacs будет традиционным выбором):

(defun test ()
"Hi!")

Затем вы можете запустить интерпретатор LISP в оболочке:

bash% sbcl
This is SBCL 1.0.29, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
* (load "test.lisp")

T
* (test)

"Hi!"
* 

Оболочка может быть либо оконным окном mac, либо уступающим LISP интерпретатором, работающим в emacs.

Ответ 2

Slime предназначен для поддержки записи файлов Lisp, включая определение поиска, онлайн-документацию, завершение имени, компиляцию и многое другое. Возможно, вам следует взглянуть на руководство, глава 3 (с использованием режима слизи).

Ответ 3

Я думаю, что немного сложно сказать, о чем вы действительно просите.

Вы можете скомпилировать и загрузить весь файл Lisp в Slime с помощью C-c C-k в буфере, а затем использовать его из Slime REPL, поэтому вам даже не нужно запускать LOAD в REPL.

Затем существуют решения для строк shebang, известных из унификаций, которые будут работать в оболочке OS X, если вы хотите запускать ваши программы Lisp как скрипты из командной строки, но они отличаются от реализации до реализации.

Возможность создания исполняемых файлов, которые затем могут запускаться из командной строки, загружает соответствующий код в ваш образ Lisp, а затем сохраняет это изображение с загруженным кодом. Эти изображения могут быть выполнены исполняемыми, выполняющими заданную функцию при запуске (подумайте main). Эта возможность также отличается для реализаций, поэтому, не упоминая о вашей реализации выбора, вам придется искать ее в своей документации.

Теперь, поскольку вы спрашиваете о "создании больших проектов", я бы посоветовал бы ознакомиться с средством определения системы. Система Lisp в основном представляет собой своего рода "проект", несколько файлов с кодом, определениями пакетов и определением системы. Я приведу вам небольшой пример для ASDF, который (насколько я могу судить) самый популярный в мире с открытым исходным кодом.

(defsystem my-system
  :name "my-system"
  :version "0.0.1"
  :author "hedgehogrider"
  :license "BSD"
  :description "bla bla bla"
  :serial t
  :components ((:file "packages")
               (:file "code")))

Теперь вы поместите это в файл asd, скажем my-system.asd, поместите определения своего пакета в packages.lisp, свою функциональность в code.lisp, а затем, если вы правильно настроили ASDF, вы бы можно скомпилировать и загрузить вашу систему в Slime REPL, нажав ,l my-system. Кроме того, вы можете ввести (asdf:oos 'load-op 'my-system) (или для более поздних версий ASDF: (asdf:load-system 'my-system)) в REPL.

Чтобы выполнить эту работу, вам нужно будет установить ASDF для вашей реализации Lisp, если она не отправлена ​​вместе с ней, а каталог, содержащий ваши asdf файлы, должен быть помещен в asdf:*central-registry*, Одно из простых решений состоит в том, чтобы символизировать ваши asdf файлы в один центральный каталог, но есть и другие возможности. Проверьте документацию ASDF или другие учебные пособия, чтобы узнать больше о ASDF.

Ответ 4

Да, вы захотите написать свои собственные файлы Lisp вместо того, чтобы полагаться на изображения.

Я рекомендую CLISP для OSX для работы с готовыми статьями. У этого есть хороший опыт REPL.

Профессиональная разработка, выполненная с использованием F/OSS сегодня, обычно использует SBCL или CCL.