Lisp (programming language): Difference between revisions

Content deleted Content added
No edit summary
m remove arbitrary fixed sizes
Line 4:
| name = Lisp
| logo = Lisp logo.svg
| logo size = 150px
| paradigm = [[Multi-paradigm programming language|Multi-paradigm]]: [[Functional programming|functional]], [[Procedural programming|procedural]], [[Reflective programming|reflective]], [[Metaprogramming|meta]]
| released = {{Start date and age|1960}}
Line 127 ⟶ 126:
 
===Genealogy and variants===
Over its sixty-year history, Lisp has spawned many variations on the core theme of an S-expression language. Some of these variations have been standardized and implemented by different groups with different priorities (for example, both [[Common Lisp]] and [[Scheme_Scheme (programming_languageprogramming language)|Scheme]] have multiple implementations). However, in other cases a software project defines a lisp without a standard and there is no clear distinction between the dialect and the implementation (for example, [[Clojure]] and [[Emacs Lisp]] fall into this category).
 
Differences between dialects (and/or implementations) may be quite visible—for instance, Common Lisp uses the keyword <code>defun</code> to name a function, but Scheme uses <code>define</code>.<ref name="jbyrI">Common Lisp: <code>(defun f (x) x)</code><br />Scheme: <code>(define f (lambda (x) x))</code> or <code>(define (f x) x)</code></ref> Within a dialect that is standardized conforming implementations support the same core language, but with different extensions and libraries. This sometimes also creates quite visible changes from the base language - for instance, [[GNU_GuileGNU Guile|Guile]] (an implementation of Scheme) uses <code>define*</code> to create functions which can have [[Default_argument|default argumentsargument]]s and/or [[Named_parameterNamed parameter|keyword arguments]], neither of which are standardized.
 
====Historically significant dialects====