Вопрос новичка о Лиспе и Пакетах - PullRequest
7 голосов
/ 10 июля 2009

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

Так что я немного поигрался в LISP. Некоторые основные функции, некоторые классы и файловый ввод-вывод. Когда я наткнулся на эту статью:

http://www.adampetersen.se/articles/lispweb.htm

И я очень рад попробовать использовать lisp для веб-приложения. Я иду и скачиваю пакеты, но на всю жизнь не знаю, как загрузить их в мою Allegro IDE.

Хм ... ладно, сайт hunchentoot говорит, что многие базовые пакеты находятся в LispWorks. Так что я скачиваю это. Все еще не уверен, как получить исходный код для пакетов, которые я скачал в эти IDE. Кажется, они имеют двоичные пакеты?

Что ж, может быть, я переключусь на мой сервер Ubuntu и получу apt-get все пакеты и установочную слизь (я раньше этим не пользовался, потому что просто хотел выучить lisp. Изучение одновременно emacs и lisp показалось мне пугающим). Я получаю все необходимые пакеты и загружаю слизь, и опять та же проблема, что там нет.

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


Если вы все еще читаете это, вот мой вопрос.
1. Как загрузить исходный код для этих пакетов в мою среду lisp. попытка изучить язык не была слишком сложной, но информация об окружающей среде была скудной. Нужно ли собирать пакеты, загружаемые с помощью ASDF.
2. Есть ли простой способ для кого-то просто начать работать в lisp, не тратя много времени на изучение всех инструментов?

Ответы [ 4 ]

8 голосов
/ 11 июля 2009

Хм ... хорошо, хорошо сайт hunchentoot говорит, что много основных пакетов в LispWorks. Поэтому я скачиваю это.

Это просто означает, что автор написал много специфичного для Lispworks кода в Hunchentoot. Это не значит, что Hunchentoot работает только на Lispworks.

Все еще не уверен, как получить исходный код для пакетов, которые я скачал в эти IDE.

Вам необходимо использовать ASDF.

Кажется, у них есть двоичные пакеты?

Это маловероятно.

Что ж, может быть, я переключусь на мой сервер Ubuntu и получу apt-get все пакеты и установочную слизь> (я не использовал его раньше, потому что просто хотел изучить lisp. Изучение emacs и lisp в то же время казался настоящим пугающим).

Тогда не делай этого. Вам не нужно использовать Emacs или Slime.

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

Для быстрых результатов попробуйте clbuild: http://common -lisp.net / project / clbuild /

Я еще немного копаюсь и вижу эту программу под названием ASDF. Похоже, ASDF это вид компоновщика пакетов для lisp? Я не знаю, это кажется странным.

ASDF немного похож на Makefile для приложений Common Lisp.

Я сейчас сдаюсь.

Это самое худшее, что вы могли бы сделать (в этом или другом месте). Я рад, что вы решили опубликовать здесь свои проблемы.

  1. Как загрузить исходный код этих пакетов в мою среду lisp. пытаться выучить шутку не так уж сложно, но информация о среда была редкой. Нужно ли собирать пакеты, загружаемые с помощью ASDF.

clbuild должен дать вам все, что вам нужно, но вот несколько советов, если вы не хотите его использовать:

  1. CLISP, SBCL: ASDF является частью вашего Lisp. Запустите (require :asdf). Lispworks, Allegro: вам нужно скачать и загрузить ASDF. Сохраните asdf.lisp где-нибудь, затем запустите (load "/path/to/asdf.lisp").
  2. Для каждой библиотеки / приложения («система» в ASDF) вам нужно скачать и распаковать ее в какое-то место. Повторяйте, пока все зависимости не будут удовлетворены. Запишите эти места (каталоги).
  3. Для каждого места из шага # 2 добавьте это место в реестр ASDF: (push "/path/to/dir/" asdf:*central-registry*). Не забудьте про косую черту.
  4. Загрузите систему, используя (asdf:oos 'asdf:load-op :system-name).
  1. Есть ли простой способ для кого-то просто начать работать с lisp, не тратя много времени на изучение всех инструментов?

См. Выше - используйте clbuild.

6 голосов
/ 10 июля 2009

Самый быстрый способ в Ubuntu - использовать пакеты, включенные в этот дистрибутив. Это нормально, если вы просто хотите попробовать что-то, но эти версии часто сравнительно старые. Я бы порекомендовал пакеты sbcl и slime. Если вы еще не знаете emacs, вы можете быстро освоить его с помощью встроенного руководства (C-h t (нажмите Control-h, отпустите, затем нажмите t)).

Затем вы можете запустить emacs, запустить slime (через M-x slime), открыть файл lisp (C-x C-f ~/lisp/first-try.lisp), и вы готовы к работе. Как учебник для Lisp, я думаю, что Practical Common Lisp - очень хорошая книга, и она в свободном доступе.

Теперь, когда вы стали похожими на Лисп, вы можете захотеть получить более свежие пакеты. Я бы рекомендовал использовать для этого clbuild (дополнительную информацию см. По ссылке, включая FAQ). Затем вы также можете создать новый sbcl (загруженный версией дистрибутива).

ASDF , кстати, является лишь средством определения системы. Он не знает, как загружать пакеты, он только знает, как загрузить системы в работающий образ Lisp. Другими словами, он просто решает проблему автоматической загрузки нескольких файлов, из которых состоит некоторая «система» (библиотека), в правильном порядке. Новейшие версии позволяют загружать пакет (после его установки, например, через clbuild) с помощью простого

(asdf:load-sys 'foo)

В старых версиях показана внутренняя концепция операций ASDF:

(asdf:operate 'asdf:load-op 'foo)

Вышеуказанное load-sys является сокращением для этого общего случая использования. Дополнительную информацию (можно сказать, все, что вам нужно о ней знать) можно найти в руководстве ASDF Getting Started . ASDF также включен в SBCL.

Когда вы загружаете исходный файл, он автоматически компилируется (генерирует .fasl файлов (быстрая загрузка)), так что в следующий раз загрузка будет намного быстрее.

2 голосов
/ 30 августа 2016

Все эти ответы хороши, однако они стали немного устаревшими с новой популярностью Quicklisp. Говоря в общих чертах, quicklisp - менеджер пакетов для asdf. После того, как Quicklisp установлен в системе, вы можете использовать (ql:quickload "name of lisp library") для загрузки этой библиотеки в вашу среду lisp, включая загрузку ее и любых ее зависимостей при необходимости. Например, чтобы загрузить, установить и загрузить Hunchentoot и все его зависимости, используйте (ql:quickload "hunchentoot"). В последующих сеансах lisp повторный вызов (ql:quickload "hunchentoot") просто загрузит уже загруженную и установленную версию, что делает ql:quickload простым способом загрузки любой библиотеки, доступной локально или удаленно. Чтобы установить Quicklisp, я рекомендую вам quicklisp.org .

Более подробное объяснение

Lisp работает немного иначе, чем другие языки, когда дело доходит до библиотек. Первое, что нужно знать, это то, что сам язык почти не предоставляет библиотечных функций - он имеет load (который просматривает и запускает каждую строку в файле, как если бы вы набрали их в REPL) и compile-file (который создает файл «быстрой загрузки», предварительно скомпилированная версия файла, которую load s и могут выполнять намного быстрее). Используя только то, что обеспечивает основной язык, чтобы загрузить библиотеку, вы должны перейти к каждому из ее файлов и load it (или (load (compile-file "filename")) it, для лучшей скорости загрузки / производительности). Это стало утомительным, поэтому было создано множество библиотек для управления загрузкой библиотек, и на данный момент asdf является королем (настолько, что многие реализации lisp фактически связывают его). В терминологии asdf библиотеки называются «системами», а файлы .asdf описывают все метаданные, связанные с их загрузкой - системы, от которых они зависят, и в основном от того, в каком порядке загружать файлы, но они все еще могут быть довольно сложными. Quicklisp, тогда, сидит на вершине asdf. По сути, когда asdf обнаруживает, что не может найти систему, Quicklisp входит и проверяет, доступна ли эта система в одном из онлайн-хранилищ Quicklisp, и если это так, загружает ее и продолжает работу asdf. ql:quickload - это всего лишь оболочка для механизма asdf для загрузки системы, которая позволяет quicklisp выручить при необходимости.

2 голосов
/ 11 июля 2009

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

Вы также можете попробовать Lisp Resource Kit , который является загрузочным CDROM с инструментами и документацией Lisp, все они уже настроены для вас. Просто вставьте его в привод CDROM и загрузитесь!

...