Lispkit Lisp - Lispkit Lisp

Lispkit Lisp je lexikálně, čistě funkční podmnožina Lisp ("Čistý Lisp") vyvinut jako testovací postel pro Funkcionální programování koncepty. Poprvé byl použit pro rané experimentování s líné hodnocení. An SECD stroj - implementace založená na ALGOL varianta byla publikována vývojářem Peterem Hendersonem v roce 1980.[1] The překladač a virtuální stroj jsou velmi přenosný a jako výsledek byly implementovány na mnoha strojích.

Základní jazyk

Základní jazyk poskytuje pouze následující funkce, ale rozšíření jsou popsána v Hendersonově knize[1] za výslovnou podporu líného hodnocení a nedeterministické programování.

atom
daný výraz vrací True, pokud je jeho hodnota atomová; Ne, pokud ne.
přidat
daný dva výrazy vrátí součet jejich číselných hodnot.
auto
daný výraz, jehož hodnotou je pár, vrátí první hodnotu páru.
cdr
daný výraz, jehož hodnotou je pár, vrátí druhou hodnotu páru.
nevýhody
daný dva výrazy vrátí dvojici hodnot sestávající z jejich hodnot.
div
daný dva výrazy vrátí dividendu jejich číselných hodnot.
ekv
dané dva výrazy vrátí True, pokud jsou jejich hodnoty stejné; Ne, pokud ne.
-li
dané tři výrazy vrátí hodnotu druhého, pokud je hodnota prvního True, jinak vrátí hodnotu třetího.
lambda
daný seznam argumentů a výraz, vrátí je jako funkci.
nechat
daný výraz s deklaracemi (jako pojmenované výrazy viditelné ve výrazu) vrátí jeho hodnotu.
letrec
jako let, kromě toho, že deklarovaná jména jsou viditelná také v samotných prohlášeních.
leq
vzhledem k tomu, dva výrazy, vrátí True, pokud je hodnota prvního numericky menší nebo rovna hodnotě druhého; Ne, pokud ne.
mod (nebo rem)
dané dva výrazy, vrátí modul (také známý jako zbytek) jejich číselných hodnot.
mul
dané dva výrazy, vrátí součin jejich číselných hodnot.
citát
daný výraz, vrátí tento výraz jako hodnotu.
sub
dané dva výrazy, vrátí rozdíl jejich číselných hodnot.

Funkce, lambda, nechat, a letrec, jsou podobné, ale mají jemné rozdíly ve způsobu, jakým zacházejí s pojmenovanými proměnnými, což je činí užitečnými různými způsoby. lambda definuje a vrací funkci, nechat váže výrazy na názvy proměnných a letrec je v podstatě podobný nechat kromě toho, že umožňuje definici rekurzivní funkce a hodnoty, např. nekonečné řady.

Reference

  1. ^ A b Henderson, Peter (1980). Funkční programování: aplikace a implementace. Prentice Hall. ISBN  0-13-331579-7.

Další čtení

  • Henderson, Peter; Jones, Geraint A .; Jones, Simon B. (1983). Manuál LispKit. Výpočetní laboratoř University of Oxford. ISBN  0-902928-18-X.

externí odkazy