fbpx
维基百科

LispKit Lisp

LispKit LispLisp语言的严格函数式子集(“纯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. . Prentice Hall. 1980 [2021-12-28]. ISBN 0-13-331579-7. (原始内容存档于2021-12-28). 
  2. ^ . [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 (页面存档备份,存于互联网档案馆

lispkit, lisp, 是lisp语言的严格函数式子集, 纯lisp, 它是作为函数式编程概念的测试台而开发的, 它首先使用了对惰性求值的早期经验, 在1980年开发者peter, henderson, 出版了用一种变体algol语言写的基于secd抽象机的实现, 编译器和虚拟机都是高度可移植的, 并已经在多种机器上实现, 目录, 基本函数, 引用, 进一步阅读, 外部链接基本函数, 编辑基本语言只提供了下列函数, 但在henderson的书中讨论了明确支持惰性求值和非确定性编程的扩展, atom, 接受一个. LispKit Lisp是Lisp语言的严格函数式子集 纯Lisp 它是作为函数式编程概念的测试台而开发的 它首先使用了对惰性求值的早期经验 在1980年开发者Peter Henderson 出版了用一种变体ALGOL语言写的基于SECD抽象机的实现 1 编译器和虚拟机都是高度可移植的 并已经在多种机器上实现 2 目录 1 基本函数 2 引用 3 进一步阅读 4 外部链接基本函数 编辑基本语言只提供了下列函数 但在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 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title LispKit Lisp amp oldid 71637063, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。