跳至內容

LispKitLisp

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

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