Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
Lispkit Lisp

Lispkit Lisp is a lexically scoped, purely functional subset of 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. The compiler and virtual machine are highly portable and as a result have been implemented on many machines.

We don't have any images related to Lispkit Lisp yet.
We don't have any YouTube videos related to Lispkit Lisp yet.
We don't have any PDF documents related to Lispkit Lisp yet.
We don't have any Books related to Lispkit Lisp yet.
We don't have any archived web articles related to Lispkit Lisp yet.

Base language

The base language provides the following functions only but extensions are discussed in Henderson's book4 for the explicit support of lazy evaluation and nondeterministic programming.

atom – given an expression returns True if its value is atomic; False if not add – given two expressions returns the sum of their numeric values car – given an expression whose value is a pair, returns the pair's first value cdr – given an expression whose value is a pair, returns the pair's second value cons – given two expressions returns a value pair consisting of their values div – given two expressions returns the quotient of their numeric values eq – given two expressions returns True if their values are equal; False if not if – given three expressions returns the value of the second if the value of the first is True, otherwise returns the value of the third lambda – given an argument list and an expression, returns them as a function let – given an expression with declarations (as named expressions visible in the expression) returns its value letrec – like let, except the declared names are also visible in the declarations themselves leq – 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 mod (or rem) – given two expressions, returns the modulus (also known as the remainder) of their numeric values mul – given two expressions, returns the product of their numeric values quote – given an expression, returns that expression as a value sub – given two expressions, returns the difference of their numeric values

The functions, lambda, let, and letrec, are similar but have subtle differences in the way that they treat named variables which make them useful in different ways: lambda defines and returns a function, let binds expressions to variable names, and letrec is essentially similar to let except it allows defining of recursive functions and values, e.g., infinite series.

Further reading

References

  1. Henderson, Peter (1980). Functional Programming: Application and Implementation. Prentice Hall. ISBN 0-13-331579-7. 0-13-331579-7

  2. McJones, Paul (12 May 2014). "Original OUCL PRG LispKit". Computer History Museum: Software Preservation Group. Mountain View, California: University of Oxford – via Plone Foundation. https://www.softwarepreservation.org/projects/LISP/lispkit/LispKit.tar.gz/view

  3. McJones, Paul (12 May 2014). "Aaron Gray's port of LispKit to GNU Pascal". Computer History Museum: Software Preservation Group. Mountain View, California: Cybercomms.org – via Plone Foundation. https://www.softwarepreservation.org/projects/LISP/lispkit/LispKit-GNU_Pascal.tar.gz/view

  4. Henderson, Peter (1980). Functional Programming: Application and Implementation. Prentice Hall. ISBN 0-13-331579-7. 0-13-331579-7