Family | Lisp |
Appeared in | 1984 |
Dialects | CLtL1, CLtL2, ANSI Common Lisp |
Language specification ANSI approved | 8th December 1994 |
Developer | ANSI X3J13 committee |
Typing discipline | Dynamic, strong |
Major implementations | SBCL, CMUCL, OpenMCL/CCL, CLISP, ABCL, ECL, GCL, LispWorks, Allegro CL, Corman CL, Symbolics CL, Scieneer CL, Movitz |
Influenced by | Lisp, Lisp Machine Lisp, MacLisp, Scheme, InterLisp |
Influenced | Clojure, Dylan, Eulisp, ISLisp, SKILL, Stella, SubL |
Opening paragraphs from Wikipedia:
[ANSI Common Lisp was] developed to standardize the divergent variants of Lisp (though mainly the MacLisp variants) which predated it, it is not an implementation but rather a language specification.
[It] is a general-purpose, multi-paradigm programming language, [supporting] a combination of procedural, functional, and object-oriented programming paradigms. As a dynamic programming language, it facilitates evolutionary and incremental software development, with iterative compilation into efficient run-time programs.
[ANSI Common Lisp] includes CLOS, an object system that supports multimethods and method combinations. It is extensible through standard features such as Lisp macros (compile-time code rearrangement accomplished by the program itself) and reader macros (extension of syntax to give special meaning to characters reserved for users for this purpose).
Reference Resources
Books
- Practical Common Lisp by Peter Seibel. (Freely available online.)
- On Lisp by Paul Graham. (Freely available online.)
- The Art of the Metaobject Protocol by Gregor Kiczales, Jim des Rivieres, and Daniel G. Bobrow.
- Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp by Peter Norvig.
- Lisp In Small Pieces by Christian Queinnec.
- Successful Lisp by David B. Lamkins.
- Lisp - An Interactive Approach by Stuart C. Shapiro.
- Loving Lisp by Mark Watson.
- Common Lisp: A Gentle Introduction to Symbolic Computation by David S. Touretzky. (Freely available online.)
Other Resources
- Common Lisp Implementations: A Survey
- L1sp.org is a redirect service for Common Lisp documentation.
- CLiki, the Common Lisp wiki.
- The Common Lisp Cookbook
- common-lisp.net: … Its goal is to provide the Common Lisp community with development resources and to work as a starting point for new programmers.
Communities
- #lisp IRC channel at irc.freenode.net.
- Planet Lisp
- LispForum.
- Google interface to USENET comp.lang.lisp group.
Editors
- SLIME: The Superior Lisp Interaction Mode for Emacs
- Eclipse Plug-In: CUSP.
- CCL, ACL, and LispWorks Common Lisp implementations are bundled with their own IDEs.
Editor Tweaks: Emacs
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; Generic Lisp Configuration
;;;
(defun custom-lisp-mode ()
(interactive)
(setq
indent-tabs-mode nil
fill-column 80
emacs-lisp-docstring-fill-column 80))
(add-to-list 'lisp-mode-hook 'custom-lisp-mode)
;;; SLIME Routines
(add-to-list 'load-path "~/elisp/slime")
(add-to-list 'load-path "~/elisp/slime/contrib")
(require 'slime)
(slime-setup '(slime-repl slime-fancy slime-indentation))
(setq
slime-net-coding-system 'utf-8-unix
slime-startup-animation nil
common-lisp-hyperspec-root "file:/var/www/clhs/"
slime-autodoc-use-multiline-p t)
(defun custom-slime-mode ()
(setq slime-complete-symbol-function 'slime-simple-complete-symbol
indent-tabs-mode nil
show-trailing-whitespace t))
(add-to-list 'slime-repl-mode-hook 'custom-slime-mode)
;;; SLIME/CCL
(add-to-list 'slime-lisp-implementations
'(ccl ("/home/vy/usr/src/ccl/lx86cl")))
;;; SLIME/SBCL
(add-to-list 'slime-lisp-implementations
'(sbcl ("/home/vy/usr/bin/sbcl")
:env ("SBCL_HOME=/home/vy/usr/lib/sbcl")))