LispKit Lisp

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,除了它允许递归函数的定义之外。

引用

  1. ^ Henderson, Peter. Functional Programming: Application and Implementation. Prentice Hall. 1980 [2021-12-28]. ISBN 0-13-331579-7. (原始内容存档于2021-12-28). 
  2. ^ 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
  • Allegro Common Lisp英语Allegro Common Lisp
  • Armed Bear Common Lisp英语Armed Bear Common Lisp(ABCL)
  • CLISP
  • Clozure CL
  • CMU Common Lisp(CMUCL)
  • Corman Common Lisp英语Corman Common Lisp
  • Embeddable Common Lisp(ECL)
  • GNU Common Lisp(GCL)
  • LispWorks英语LispWorks
  • Macintosh Common Lisp英语Macintosh Common Lisp
  • Mocl英语Mocl
  • Poplog英语Poplog
  • Steel Bank Common Lisp(SBCL)
  • Symbolics Common Lisp英语Genera (operating system)
  • 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
教育
图书
教程
  • ProgramByDesign英语ProgramByDesign
组织
商业
  • 苹果公司
  • BBN
  • Harlequin英语Harlequin (software company)
  • Lucid Inc.英语Lucid Inc.
  • Symbolics英语Symbolics
  • Xanalys英语Xanalys
教育
人士
 
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