LispKit Lisp是Lisp语言的严格函数式子集(“纯Lisp”),它是作为函数式编程概念的测试台而开发的。它首先使用了对惰性求值的早期经验。在1980年开发者Peter Henderson,出版了用一种变体ALGOL语言写的基于SECD抽象机的实现[1]。编译器和虚拟机都是高度可移植的,并已经在多种机器上实现[2]。
基本函数
基本语言只提供了下列函数,但在Henderson的书中讨论了明确支持惰性求值和非确定性编程的扩展。
- atom
- 接受一个表达式,如果它的值是原子则返回 True;否则返回 False。
- add
- 接受两个表达式,返回它们的数值的和。
- car
- 接受其值为点对的一个表达式,返回这个点对的第一个值。
- cdr
- 接受其值为点对的一个表达式,返回这个点对的第二个值。
- cons
- 接受两个表达式,返回由它们的值构成的一个点对值。
- div
- 接受两个表达式,返回它们的数值的商。
- eq
- 接受两个表达式,如果它们的值相等则返回 True;否则返回 False。
- if
- 接受三个表达式,如果第一个为 True 则返回第二个的值,否则返回第三个的值。
- lambda
- 接受一个表达式,返回这个表达式为可求值的值。
- let
- 接受命名表达式的一个列表,返回这个列表为一个单一可求值的值。
- letrec
- 接受命名表达式的一个列表,返回这个列表为一个单一可求值的值。
- leq
- 接受两个表达式,如果第一个数值小于或等于第二个则返回 True;否则返回 False。
- rem
- 接受两个表达式,返回它们的数值的余数。
- mu
- 接受两个表达式,返回它们的数值的积。
- quote
- 接受一个表达式,返回这个表达式为一个值。
- sub
- 接受两个表达式,返回它们的数值的差。
函数lambda、let和letrec是类似的,但是在处理命名变量的方式上有着微妙的区别,故有不同的用处。lambda定义并返回一个函数,let把表达式赋值给变量名,而letrec本质上类似于let,除了它允许递归函数的定义之外。
引用
- ^ Henderson, Peter. Functional Programming: Application and Implementation. Prentice Hall. 1980 [2021-12-28]. ISBN 0-13-331579-7. (原始内容存档于2021-12-28).
- ^ An implementation of the Lispkit described in the book "FUNCTIONAL PROGRAMMING: Application and Implementation", by Peter Henderson. [2021-12-28]. (原始内容存档于2021-12-30).
进一步阅读
- Peter Henderson, Geraint A. Jones, and Simon B. Jones, "The LispKit Manual" (ISBN 0-902928-18-X)
外部链接
- The LispKit Manual, Volume 1 (页面存档备份,存于互联网档案馆), Volume 2 (页面存档备份,存于互联网档案馆)
- Implementation of Lispkit (页面存档备份,存于互联网档案馆)
- GNU Pascal LispKit port (页面存档备份,存于互联网档案馆)
- Archive of old LispKit LISP code and files, plus C implementation of SECD machine
- Paper about a LispKit LISP implementation in Java (页面存档备份,存于互联网档案馆), and the implementation itself (页面存档备份,存于互联网档案馆)
Lisp编程语言 |
---|
| 特征 | | |
---|
| | - Common Lisp对象系统(CLOS)
- CommonLoops(英语:CommonLoops)
- Flavors(英语:Flavors (programming language))
|
---|
|
---|
| 实现(英语:Programming language implementation) | | Common Lisp | |
---|
| | - Bigloo(英语:Bigloo)
- Chez Scheme
- Chicken
- Gambit
- Gauche(英语:Gauche (Scheme implementation))
- GNU Guile
- Ikarus(英语:Ikarus (Scheme implementation))
- IronScheme(英语:IronScheme)
- JScheme
- Kawa(英语:Kawa (Scheme implementation))
- Larceny
- MIT/GNU Scheme
- Racket
- RScheme(英语:RScheme)
- Scheme 48
- SCM
- SIOD
- STklos(英语:STklos)
- TinyScheme
- Ypsilon(英语:Ypsilon (Scheme implementation))
|
---|
| | - OpenLisp(英语:OpenLisp)
- Easy-ISLisp
|
---|
|
---|
| 未标准化 | | - Arc
- AutoLISP
- BBN LISP
- Clojure
- Dylan
- Emacs Lisp
- EuLisp(英语:EuLisp)
- Franz Lisp
- GOAL(英语:Game Oriented Assembly Lisp)
- Hy
- Interlisp(英语:Interlisp)
- 知识工程环境(英语:Knowledge Engineering Environment)
- LispKit
- *Lisp(英语:*Lisp)
- Le Lisp
- LFE(英语:LFE (programming language))
- Lisp Machine Lisp(英语:Lisp Machine Lisp)
- Maclisp
- MDL(英语:MDL (programming language))
- MLisp(英语:MLisp)
- MultiLisp(英语:MultiLisp)
- newLISP
- NIL(英语:NIL (programming language))
- PC-LISP(英语:PC-LISP)
- PicoLisp
- Portable Standard Lisp(英语:Portable Standard Lisp)
- RPL(英语:RPL (programming language))
- S-1 Lisp(英语:S-1 Lisp)
- SKILL
- Spice Lisp(英语:Spice Lisp)
- T(英语:T (programming language))
- Zetalisp(英语:Zetalisp)
|
---|
| Logo | - MSWLogo(英语:MSWLogo)
- NetLogo
- StarLogo(英语:StarLogo)
- UCBLogo(英语:UCBLogo)
|
---|
|
---|
| | - Common Lisp界面管理器(英语:Common Lisp Interface Manager)
- McCLIM(英语:McCLIM)
- Genera(英语:Genera (operating system))
- Scsh(英语:Scsh)
|
---|
| | - Lisp机器
- TI Explorer(英语:TI Explorer)
- Space-cadet键盘(英语:Space-cadet keyboard)
|
---|
|
---|
| 实践 社群 | 技术标准 | - Scheme实现要求(英语:Scheme Requests for Implementation)
- Common Lisp HyperSpec(英语:Common Lisp HyperSpec)
- X3J13(英语:X3J13)
|
---|
| 教育 | 图书 | - Common Lisp语言(英语:Common Lisp the Language)
- 如何设计程序(HtDP)
- On Lisp(英语:On Lisp)
- Practical Common Lisp(英语:Practical Common Lisp)
- 计算机程序的构造和解释(SICP)
|
---|
| 教程 | - ProgramByDesign(英语:ProgramByDesign)
|
---|
|
---|
| 组织 | 商业 | - 苹果公司
- BBN
- Harlequin(英语:Harlequin (software company))
- Lucid Inc.(英语:Lucid Inc.)
- Symbolics(英语:Symbolics)
- Xanalys(英语:Xanalys)
|
---|
| 教育 | - 麻省理工学院
- 斯坦福人工智能实验室(英语:Stanford University centers and institutes#Stanford Artificial Intelligence Laboratory)
- 加利福尼亚大学伯克利分校
|
---|
|
---|
| 人士 | | |
---|
| Common Lisp | - Scott Fahlman(英语:Scott Fahlman)
- Richard P. Gabriel(英语:Richard P. Gabriel)
- Philip Greenspun(英语:Philip Greenspun)
- David A. Moon(英语:David A. Moon)
- Kent Pitman(英语:Kent Pitman)
- Guy L. Steele Jr.
- Daniel Weinreb(英语:Daniel Weinreb)
|
---|
| | |
---|
| Logo | |
---|
|
---|
|
---|
| - 语言
- 家族
- 列表(英语:List of Lisp-family programming languages)
|
|