Lispkit Lisp - Lispkit Lisp
![]() | Tento článek má několik problémů. Prosím pomozte vylepši to nebo diskutovat o těchto otázkách na internetu diskusní stránka. (Zjistěte, jak a kdy tyto zprávy ze šablony odebrat) (Zjistěte, jak a kdy odstranit tuto zprávu šablony)
|
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
- ^ 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.