скомпилируйте / запустите Common LIsp из терминала Mac - PullRequest
12 голосов
/ 14 марта 2011

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

Ответы [ 4 ]

11 голосов
/ 14 марта 2011

Я думаю, что ваши лучшие ставки для 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.

6 голосов
/ 14 марта 2011

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

5 голосов
/ 15 марта 2011

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

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

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

Возможность загрузки исполняемых файлов, которые затем можно запускать из командной строки, загружаетсясоответствующий код в ваше изображение 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, вы сможете скомпилировать и загрузить свою систему вREPL слизи, нажав ,l my-system.В качестве альтернативы, вы можете ввести (asdf:oos 'load-op 'my-system) (или, для более поздних версий ASDF: (asdf:load-system 'my-system)) в REPL.

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

2 голосов
/ 14 марта 2011

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

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

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

...