Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Lispkit Lisp

From Wikipedia, the free encyclopedia
This article has multiple issues. Please helpimprove it or discuss these issues on thetalk page.(Learn how and when to remove these messages)
The topic of this articlemay not meet Wikipedia'sgeneral notability guideline. Please help to demonstrate the notability of the topic by citingreliable secondary sources that areindependent of the topic and provide significant coverage of it beyond a mere trivial mention. If notability cannot be shown, the article is likely to bemerged,redirected, ordeleted.
Find sources: "Lispkit Lisp" – news ·newspapers ·books ·scholar ·JSTOR
(June 2018) (Learn how and when to remove this message)
icon
This articlerelies excessively onreferences toprimary sources. Please improve this article by addingsecondary or tertiary sources.
Find sources: "Lispkit Lisp" – news ·newspapers ·books ·scholar ·JSTOR
(June 2018) (Learn how and when to remove this message)
(Learn how and when to remove this message)
Lispkit Lisp
Paradigmpure functional
FamilyLisp
Designed byPeter Henderson
First appeared1980; 46 years ago (1980)
Scopelexical
Implementation languageALGOL
Influenced by
ALGOL,Lisp

Lispkit Lisp is alexically scoped,purely functional subset ofLisp (Pure Lisp) developed as a testbed forfunctional programming concepts. It was first used for early experimentation withlazy evaluation. An implementation based on astack, environment, control, dumpvirtual machine andabstract machine (SECD machine) written in anALGOL variant was published by the developer Peter Henderson in 1980.[1] Thecompiler andvirtual machine are highlyportable and as a result have been implemented on many machines.[2][3]

Base language

[edit]

The base language provides the following functions only but extensions are discussed in Henderson's book[1] for the explicit support of lazy evaluation andnondeterministic 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 (orrem) – 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, andletrec, 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, andletrec is essentially similar tolet except it allows defining ofrecursive functions and values, e.g.,infinite series.

References

[edit]
  1. ^abHenderson, Peter (1980).Functional Programming: Application and Implementation. Prentice Hall.ISBN 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.
  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.

Further reading

[edit]

External links

[edit]
Features
Object systems
Implementations
Standardized
Common
Lisp
Scheme
ISLISP
Unstandardized
Logo
POP
Operating system
Hardware
Community
of practice
Technical standards
Education
Books
Curriculum
Organizations
Business
Education
People
Common
Lisp
Scheme
Logo
POP
Retrieved from "https://en.wikipedia.org/w/index.php?title=Lispkit_Lisp&oldid=1263038062"
Category:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp