Lisp MacLispInterLisp ZetaLisp Scheme NewLisp Common Lisp Clojure Arc NuLisp Emacs Lisp Dylan
Характеристики Common Lisp среди Lisp'ов Lisp N Лексический и динамический диапазон s-выражения Динамическая типизация с опциональным объявлением типов Мультипарадигменность
Стандарт 25 особых операторов: block catch declare eval flet function go if labels let let* load-time-value locally macrolet multiple-value-call multiple-value-prog1 progn progv quote return-from setq symbol-macrolet tagbody the throw unwind-protect Всё остальное – пакет COMMON-LISP – фактически стандартная библиотека, которая через механизм импорта может быть переопределена поэлементно или вообще не подключена
Проблемы стандарта Нет разделения на подпакеты Работа с файлами оторвана от реального мира В стандарте нет multithreading Нет sockets Нет streams Нет environment Нет RE CLOS не интегрирован до основания (нельзя наследовать от core data types), а MOP не стандартизирован вообще
Реализации На cl-user.net перечисленно 26 реализаций из них минимум 8 значительных: SBCL, CMUCL Allegro CL LispWorks CLISP Clozure CL ABCL Corman CL ECL
IDE Emacs SLIME ABLE ( Cusp Plugin for Eclipse LispBox Luke Gorrie Erlang: ICFPC '01 winner with Joe Armstrong SLIME clbuild Smalltalk & Forth for OLPC
Де-факто стандартные библиотеки "APL is like a diamond. It has a beautiful crystal structure; all of its parts are related in a uniform and elegant way. But if you try to extend this structure in any way even by adding another diamond you get an ugly kludge. LISP, on the other hand, is like a ball of mud. You can add any amount of mud to it and it still looks like a ball of mud." --Joel Moses Решают проблему несовершенства стандарта Как и любой медали – 2 стороны. Пример: ITERATE
Описание систем и дистрибутивов ASDF и ASDF-INSTALL недостатки: over-engineered & underdocumented XCVB clbuild MUDBALLS
RE CL-PPCRE (быстрее, чем Perl) Edi Weitz Ediware ( Hunchentoot & Drakma Cl-WHO & HTML-TEMPLATE European Lisp Meetup
Files & OS CL-FAD & CL-POSIX GUI LispWorks CAPI LTK Cells CL-QT4... McCLIM
FFI CFFI vs UFFI CL+J (cffi:defcallback passwd-cb-name :int ((buf :pointer) (size :int) (rwflag :int) (unused :pointer)) (let ((tmp (cffi:foreign-string-alloc password-str))) (cffi:foreign-funcall "strncpy" :pointer buf :pointer tmp :int size) (cffi:foreign-string-free tmp) (setf (cffi:mem-ref buf :char (1- size)) 0) (cffi:foreign-funcall "strlen" :pointer buf :int))) (ssl-ctx-set-default-passwd-cb *ssl-global-context* (cffi:callback passwd-cb-name))))))
MOP CLOSER-MOP ContextL AspectL Pascal Costanza Highly Opinionated Guide to Lisp Reflection for the Masses CDR European Lisp Symposium
Sockets USOCKET Streams Gray Streams (TRIVIAL-GRAY-STREAMS) Threading BORDEAUX-THREADS
Concurrency Implememntation specific (sb-ext:compare-and-swap) PCALL CL-MUPROC CL-STM FSet
Functional Pattern Matching: CL-UNIFICATION CLAZY CL-CONT
Парсинг данных ClosureXML (CXML), S-XML, CL-LIBXML2 CL-JSON DSV SQL, Persistance CLSQL, Postmodern Elephant, AllegroCache
Community cliki.net common-lisp.net paste.lisp.org cl-user.net freenode lisp.catap.ru Bill Clementson
comp.lang.lisp Rainer Joswig, Kenny Tilton, Pascal Bourguignon, Kaz Kylheku Erik Naggum Kent M. Pitman HyperSpec Condition Handling in the Lisp Language Family EQUAL Rights – and Wrongs – in Lisp
Книги Practical Common Lisp ( Let over Lambda On Lisp A Gentle Introduction to Symbolic Computation Successful Lisp ANSI Common Lisp Konrad Barksi's ( Art of Meta-Object Protocol Sketchy Lisp Lisp in Small Pieces Peter Siebel
Output Guy Steele Jr. Scheme CLtL Java Fortress Growing a Language Dick Gabriel Lucid Patterns of Software Worse is Better David Moon MacLisp Symbolics Plot Dan Weinreib Symbolics ObjectStore ITA Software
Еще Paul Graham ViaWeb YCombinator Arc Nature of Lisp Beating the Averages Peter Norvig PAIP, AIMA NASA Google Design Patterns in Dynamic Programming Mark Tarver Qi Lisp for the 21 st Century A Bipolar Lisp Programmer Rich Hickey Clojure Values and Change
Будущее Lisp reneissance (