Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Lisp (programming language)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Major dialects== [[Common Lisp]] and [[Scheme (programming language)|Scheme]] represent two major streams of Lisp development. These languages embody significantly different design choices. [[Common Lisp]] is a successor to [[Maclisp]]. The primary influences were [[Lisp Machine Lisp]], Maclisp, [[NIL (programming language)|NIL]], [[S-1 Lisp]], [[Spice Lisp]], and Scheme.<ref name="uMuJD">Chapter 1.1.2, History, ANSI CL Standard</ref> It has many of the features of Lisp Machine Lisp (a large Lisp dialect used to program [[Lisp Machine]]s), but was designed to be efficiently implementable on any personal computer or workstation. Common Lisp is a general-purpose programming language and thus has a large language standard including many built-in data types, functions, macros and other language elements, and an object system ([[Common Lisp Object System]]). Common Lisp also borrowed certain features from Scheme such as [[lexical scoping]] and [[lexical closure]]s. Common Lisp implementations are available for targeting different platforms such as the [[LLVM]],<ref name="hEWIZ">[https://www.cliki.net/Clasp] Clasp is a Common Lisp implementation that interoperates with C++ and uses LLVM for [[just-in-time compilation]] (JIT) to native code.</ref> the [[Java virtual machine]],<ref name="vBfvI">[https://common-lisp.net/project/armedbear/] "Armed Bear Common Lisp (ABCL) is a full implementation of the Common Lisp language featuring both an interpreter and a compiler, running in the JVM"</ref> x86-64, PowerPC, Alpha, ARM, Motorola 68000, and MIPS,<ref name="za6Q8">[https://common-lisp.net/~dlw/LispSurvey.html] {{Webarchive|url=https://web.archive.org/web/20180622083812/https://common-lisp.net/~dlw/LispSurvey.html|date=2018-06-22}} Common Lisp Implementations: A Survey</ref> and operating systems such as Windows, macOS, Linux, Solaris, FreeBSD, NetBSD, OpenBSD, Dragonfly BSD, and Heroku.<ref name="QX6kG">[https://www.cliki.net/Common+Lisp+implementation] Comparison of actively developed Common Lisp implementations</ref> Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by [[Guy L. Steele, Jr.]] and [[Gerald Jay Sussman]]. It was designed to have exceptionally clear and simple semantics and few different ways to form expressions. Designed about a decade earlier than Common Lisp, [[Scheme (programming language)|Scheme]] is a more minimalist design. It has a much smaller set of standard features but with certain implementation features (such as [[tail-call optimization]] and full [[continuation]]s) not specified in Common Lisp. A wide variety of programming paradigms, including imperative, functional, and message passing styles, find convenient expression in Scheme. Scheme continues to evolve with a series of standards (Revised<sup>n</sup> Report on the Algorithmic Language Scheme) and a series of [[Scheme Requests for Implementation]]. [[Clojure]] is a dialect of Lisp that targets mainly the [[Java virtual machine]], and the [[Common Language Runtime]] (CLR), the [[Python (programming language)|Python]] VM, the Ruby VM [[YARV]], and compiling to [[JavaScript]]. It is designed to be a pragmatic general-purpose language. Clojure draws considerable influences from [[Haskell]] and places a very strong emphasis on immutability.<ref name="clojure-immutability">[http://www.infoq.com/articles/in-depth-look-clojure-collections An In-Depth Look at Clojure Collections], Retrieved 2012-06-24</ref> Clojure provides access to Java frameworks and libraries, with optional type hints and [[type inference]], so that calls to Java can avoid reflection and enable fast primitive operations. Clojure is not designed to be backwards compatible with other Lisp dialects.<ref name="f6C82">{{cite web |title=Clojure rational |url=https://clojure.org/about/rationale |access-date=27 August 2019 |quote=Clojure is a Lisp not constrained by backwards compatibility}}</ref> Further, Lisp dialects are used as [[scripting language]]s in many applications, with the best-known being [[Emacs Lisp]] in the [[Emacs]] editor, [[AutoLISP]] and later [[Visual Lisp]] in [[AutoCAD]], Nyquist in [[Audacity (audio editor)|Audacity]], and Scheme in [[LilyPond]]. The potential small size of a useful Scheme interpreter makes it particularly popular for embedded scripting. Examples include [[SIOD]] and [[TinyScheme]], both of which have been successfully embedded in the [[GIMP]] image processor under the generic name "Script-fu".<ref name="script-fu">[http://www.gimp.org/docs/script-fu-update.html Script-fu In GIMP 2.4], Retrieved 2009-10-29</ref> LIBREP, a Lisp interpreter by John Harper originally based on the [[Emacs Lisp]] language, has been embedded in the [[Sawfish (window manager)|Sawfish]] [[window manager]].<ref name="librep">[http://sawfish.wikia.com/wiki/Librep librep] at Sawfish Wikia, retrieved 2009-10-29</ref> ===Standardized dialects=== Lisp has officially standardized dialects: [[Scheme (programming language)#R6RS|R6RS Scheme]], [[Scheme (programming language)#R7RS|R7RS Scheme]], IEEE Scheme,<ref name="LQgpj">{{cite web |url=https://standards.ieee.org/ieee/1178/1787/ |website=IEEE 1178-1990 - IEEE Standard for the Scheme Programming Language |access-date=27 August 2019 |title=IEEE Scheme}}</ref> [[ANSI Common Lisp]] and ISO [[ISLISP]].
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)