Over its sixty-year history, Lisp has spawned many variations on the core theme of an S-expression language. MoreoverSome of these variations have been standardized and implemented by different groups with different priorities (for example, eachboth given[[Common dialectLisp]] mayand [[Scheme_(programming_language)|Scheme]] have severalmultiple implementations—forimplementations). instanceHowever, therein areother morecases thana software project defines a dozenlisp implementationswithout ofa standard and there is no clear distinction between the dialect and the implementation (for example, [[CommonClojure]] 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, however, 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_Guile|Guile]] (an implementation of Scheme) uses <code>define*</code> to create functions which can have [[Default_argument|default arguments]] and/or [[Named_parameter|keyword arguments]], neither of which are standardized.