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
Lispkit Lisp
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!
{{Multiple issues| {{Notability|date=June 2018}} {{Primary sources|date=June 2018}} }} {{Infobox programming language | name = Lispkit Lisp | screenshot = <!-- Filename --> | screenshot caption = | sampleCode = | paradigm =[[Purely functional programming|pure functional]] | family = [[Lisp (programming language)|Lisp]] | designer = Peter Henderson | developer = <!-- or: | developers = --> | released = {{Start date and age|1980}} | latest release version = | latest release date = {{Start date and age|1983}} | typing = | memory management = | scope = [[Scope (computer science)|lexical]] | programming language = [[ALGOL]] | discontinued = Yes | platform = | operating system = | license = | file ext = | file format = <!-- or: | file formats = --> | website = <!-- {{URL|www.example.com}} --> | implementations = | dialects = | influenced by = [[ALGOL]], [[Lisp (programming language)|Lisp]] | influenced = }} '''Lispkit Lisp''' is a [[Lexical scoping|lexically scoped]], [[Purely functional programming|purely functional]] subset of [[Lisp (programming language)|Lisp]] ('''Pure Lisp''') developed as a testbed for [[functional programming]] concepts. It was first used for early experimentation with [[lazy evaluation]]. An implementation based on a ''stack, environment, control, dump'' [[virtual machine]] and [[abstract machine]] ([[SECD machine]]) written in an [[ALGOL]] variant was published by the developer Peter Henderson in 1980.<ref name="henderson">{{cite book |last1=Henderson |first1=Peter |year=1980 |title=Functional Programming: Application and Implementation |publisher=Prentice Hall |isbn=0-13-331579-7}}</ref> The [[compiler]] and [[virtual machine]] are highly [[porting|portable]] and as a result have been implemented on many machines.<ref> {{cite web |last1=McJones |first1=Paul |date=12 May 2014 |title=Original OUCL PRG LispKit |website=[[Computer History Museum]]: Software Preservation Group |publisher=University of Oxford |publication-place=Mountain View, California |url=https://www.softwarepreservation.org/projects/LISP/lispkit/LispKit.tar.gz/view |via=Plone Foundation}}</ref><ref> {{cite web |last1=McJones |first1=Paul |date=12 May 2014 |title=Aaron Gray's port of LispKit to GNU Pascal |website=[[Computer History Museum]]: Software Preservation Group |publisher=Cybercomms.org |publication-place=Mountain View, California |url=https://www.softwarepreservation.org/projects/LISP/lispkit/LispKit-GNU_Pascal.tar.gz/view |via=Plone Foundation}}</ref> == Base language == The base language provides the following functions only but extensions are discussed in Henderson's book<ref name="henderson"/> for the explicit support of lazy evaluation and [[nondeterministic programming]]. :<code>atom</code> β given an expression returns True if its value is atomic; False if not :<code>add</code> β given two expressions returns the sum of their numeric values :<code>car</code> β given an expression whose value is a pair, returns the pair's first value :<code>cdr</code> β given an expression whose value is a pair, returns the pair's second value :<code>cons</code> β given two expressions returns a value pair consisting of their values :<code>div</code> β given two expressions returns the quotient of their numeric values :<code>eq</code> β given two expressions returns True if their values are equal; False if not :<code>if</code> β given three expressions returns the value of the second if the value of the first is True, otherwise returns the value of the third :<code>lambda</code> β given an argument list and an expression, returns them as a function :<code>let</code> β given an expression with declarations (as named expressions visible in the expression) returns its value :<code>letrec</code> β like let, except the declared names are also visible in the declarations themselves :<code>leq</code> β given two expressions, returns True if the value of the first is numerically less than or equal to the value of the second; False if not :<code>mod</code> (or <code>rem</code>) β given two expressions, returns the modulus (also known as the remainder) of their numeric values :<code>mul</code> β given two expressions, returns the product of their numeric values :<code>quote</code> β given an expression, returns that expression as a value :<code>sub</code> β given two expressions, returns the difference of their numeric values The functions, <code>lambda</code>, <code>let</code>, and <code>letrec</code>, are similar but have subtle differences in the way that they treat named variables which make them useful in different ways: <code>lambda</code> defines and returns a function, <code>let</code> binds expressions to variable names, and <code>letrec</code> is essentially similar to <code>let</code> except it allows defining of [[Recursion (computer science)|recursive]] functions and values, e.g., [[Series (mathematics)|infinite series]]. == References == {{Reflist}} == Further reading == *{{cite book |last1=Henderson |first1=Peter |last2=Jones |first2=Geraint A. |last3=Jones |first3=Simon B. |date=1 December 1983 |title=The LispKit Manual |publisher=[[University of Oxford]] Computing Laboratory |isbn=978-0902928183}} *{{cite book |last1=Henderson |first1=Peter |last2=Jones |first2=Geraint A. |last3=Jones |first3=Simon B. |date=1 December 1983 |url=http://www.cs.ox.ac.uk/files/3299/PRG32%20vol%201.pdf |title=The LispKit Manual: Volume 1 |publication-place=Oxford, England |publisher=[[University of Oxford]]: Computing Laboratory: Programming Research Group}} *{{cite book |last1=Henderson |first1=Peter |last2=Jones |first2=Geraint A. |last3=Jones |first3=Simon B. |date=1 December 1983 |url=http://www.cs.ox.ac.uk/files/3300/PRG32%20vol%202.pdf |title=The LispKit Manual: Volume 2 |publication-place=Oxford, England |publisher=[[University of Oxford]]: Computing Laboratory: Programming Research Group}} == External links == * [https://github.com/hanshuebner/secd/tree/master/lispkit/LKIT-2 Archive of old LispKit Lisp code and files, plus C implementation of SECD machine] * [http://perun.pmf.uns.ac.rs/radovanovic/publications/2002-prim-lisp.pdf Paper about a LispKit Lisp implementation in Java], and [https://perun.pmf.uns.ac.rs/radovanovic/downloads.htm the implementation] {{Lisp programming language}} [[Category:Lisp programming language family]]
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)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite book
(
edit
)
Template:Cite web
(
edit
)
Template:Infobox programming language
(
edit
)
Template:Lisp programming language
(
edit
)
Template:Multiple issues
(
edit
)
Template:Reflist
(
edit
)