Библиотека knigago >> Литература по изданиям >> Самиздат, сетевая литература >> Nikodemus' Common Lisp FAQ


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 2099, книга: Тьма
автор: Алексей Григорьевич Атеев

«Тьма» Алексея Атеева — захватывающий и леденящий кровь роман ужасов, который погружает читателя в мир абсолютного зла и отчаяния. История разворачивается в отдаленной деревне, где группа исследователей натыкается на древнее зло, которое пробудилось ото сна. Атеев мастерски создает атмосферу страха и беспокойства с самого начала. Вместе с персонажами читатели спускаются в темные глубины заброшенного монастыря, где зло скрывается за каждым углом. Описания обстановки и ужасающих существ вызывают...

СЛУЧАЙНАЯ КНИГА

Nikodemus Siivola - Nikodemus' Common Lisp FAQ

Nikodemus' Common Lisp FAQ
Книга - Nikodemus
Название:
Nikodemus' Common Lisp FAQ
Nikodemus Siivola

Жанр:

Самиздат, сетевая литература, Литература ХXI века (эпоха Глобализации экономики), Любительские переводы, Lisp, Scheme

Изадано в серии:

неизвестно

Издательство:

Интернет-издательство «Stribog»

Год издания:

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Nikodemus' Common Lisp FAQ"

Последнее обновление: 2012-04-13.
Это очень неофициальное ЧаВО по языку Common Lisp, отражающее субъективное мнение Nikodemus Siivola. Этот текст частично основан на других ЧаВО, встречавшихся на просторах интернета и comp.lang.lisp.
Если вы думаете, что я воспользовался вашим текстом, буду рад признаться в этом, поэтому пишите на nikodemus@random-state.net.
Текущая версия этого ЧаВО доступна по следующим адресам:
http://random-state.net/files/nikodemus-cl-faq.txt
http://random-state.net/files/nikodemus-cl-faq.html
ЧаВО также периодически публикуется в comp.lang.lisp.

Читаем онлайн "Nikodemus' Common Lisp FAQ". [Страница - 3]

стр.
Server.

http://common-lisp.net/project/cl-gtk2/

http://sourceforge.net/projects/clg/

http://www.gtk-server.org/


CLIM (Common Lisp Interface Manager) — это почти стандартизированная спецификация API для GUI, довольно сильно отличающаяся от GUI, перечисленных выше. Не ожидайте, что все будет знакомо и понятно.

http://random-state.net/files/how-is-clim-different.html

Многие клянутся, что это лучшее, что есть для построения GUI, другие утверждают, что это совсем не так. Как бы то ни было, большинство коммерческих Lisp'ов реализуют CLIM, и еще есть переносимая открытая библиотека, называемая McCLIM, довольно удобная, хотя в последнее время не особо развиваемая.

http://common-lisp.net/project/mcclim/


CLX — это переносимый низкоуровневый Lisp-интерфейс к X11, предоставляющий уровень абстракций, сопоставимый с Xlib.

http://www.cliki.net/CLX

https://github.com/sharplispers/clx


Если не строго ограничиваться вопросами GUI, буду неправ, если не упомяну CL-OPENGL, переносимую привязку к API OpenGL, GLU и GLUT:

http://common-lisp.net/project/cl-opengl/

Какие есть форумы?

Не форум конечно, но есть Planet Lisp — агрегатор блогов по Common Lisp. Много интересной информации, без избытка.

http://planet.lisp.org/


LispForum — просто хороший форум:

http://www.lispforum.com/

но я не ручаюсь, поскольку бываю там нечасто.


Есть ещё группы comp.lang.lisp на Usenet/Google Groups, но они густо населены троллями. Пишущие там авторы довольно грамотны, при этом спекуляции профанов — рядовое явление. Читать эти группы может быть тяжело, но чтобы пользоваться Lisp'ом, читать их не обязательно.

http://groups.google.com/group/comp.lang.lisp


Специализированные списки рассылки имеют намного лучшее отношение сигнал/шум. Все реализации стараются завести собственные пользовательские и справочные списки рассылки, большинство библиотек также создают собственные списки рассылки. Для SBCL есть, например, это:

https://lists.sourceforge.net/lists/listinfo/sbcl-help


Среди open-source разработчиков и пользователей популярен канал #lisp на freenode.org. Имейте, впрочем, ввиду, что на #lisp довольно жестко придерживаются темы, и эта тема Common Lisp, а не «Lisp вообще». Для этого есть канал #lispcafe с гораздо более мягкими правилами.


Довольно активно сообщество разработчиков игр, но я не особо с ним знаком. Гугл вам в помощь.


Профессионалы Common Lisp общаются в списке «pro». Обсуждение других диалектов Lisp'а является офтопиком, вопросы новичков НЕ принимаются.

http://lists.common-lisp.net/mailman/listinfo/pro

Свойства языка

Как скомпилировать файл?

Короткий ответ: запускаете Lisp и печатаете:

(compile-file "/path/to/myfile.lisp")

Затем, скорее всего, вам потребуется загрузить (load…) компилированный файл.


Развернутый ответ: большинство компилируемых языков неинтерактивны — вы компилирует файл из командной строки или IDE, затем запускаете компилированный файл. В Lisp'е все не так.

При том, что в общем случае вы можете превратить ваш проект в исполняемый файл, типичная рабочая сессия не похожа на цикл правка-компиляция-выполнение, как можно было бы ожидать.

Обычно взаимодействие происходит с запущенным Lisp-процессом, который содержит рабочую сессию, в которую вы интерактивно добавляете код.

Например:

1. открываем Emacs, с помощью M-x slime запускаем Slime и Lisp;

2. с помощью, к примеру, ASDF, загружаем имеющийся код;

3. открываем нужный файл, правим функцию и нажимаем C-c C-c, что приведет её перекомпиляции;

4. переходим в Slime REPL и тестируем изменения;

5. повторяем с шага 3.


Упомянутая выше аббревиатура ASDF расшифровывается как «Another System Definition Facility». Этой система позволяет указать способ сбора нескольких файлов в единую систему для их загрузки или компиляции одной командой. Чем-то походит на Make.

Как сделать исполняемый файл?

Ответ зависит от используемой вами реализации. Смотрите в документации. Если говорить про SBCL:

;; Загружаете приложение в SBCL, затем выполняете команду save-lisp-and-die.

;; Точка входа в приложение — MY-FUNCTION.

(save-lisp-and-die "my.exe":executable t: toplevel 'my-function)

FUNCALL и APPLY — в чем разница, что использовать?

Короткий ответ: везде, где можно используйте FUNCALL, в остальных случаях используйте APPLY.


Развернутый ответ: при вызове FUNCALL должно быть известно количество аргументов. APPLY (и MULTIPLE-VALUE-CALL) не требует информации о количестве аргументов.

(defun map-list-with-1 (function list arg)

     (mapcar (lambda (elt)

                 (funcall function elt arg))

              list))


(defun map-list-with-n (function list &rest args)

--">
стр.

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.