LispKitLisp
外觀
這是此頁批准,以及是最近的修訂。
LispKit Lisp是 Lisp 語言的嚴格函數式子集(「純純 Lisp」), 伊是做函數式的編程概念的測試台開發的。伊首先有使用矣對慢性求值的早期經驗。佇一九八O年開發者 Peter Henderson,出版矣用一種變體 ALGOL 語言寫的是基於 SECD 抽象機的實現。編譯器佮虛擬機攏是懸度會當徙栽,並已經佇咧多種機器頂懸實現。
基本函數
基本語言干焦提供予下列函數,猶毋過佇 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,除了伊允准遞歸函數的定義以外。
引用
進一步來讀冊
- Peter Henderson , Geraint A . Jones , and Simon B . Jones , " The LispKit Manual " ( ISBN 空空九十五空二千九百二十八撨十八-X )
外部連結
- The LispKit Manual , Volume 一 , Volume 二
- 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