Loading article…
| Lispkit Lisp | |
|---|---|
| パラダイム | 純粋機能 |
| 家族 | Lisp |
| デザイン : | ピーター・ヘンダーソン |
| 初 登場 | 1980年 (1980年) |
| 範囲 | 語彙的 |
| 実装言語 | アルゴル |
| 影響を受けた | |
| ALGOL、Lisp | |
Lispkit Lisp は、関数型プログラミングの概念のテストベッドとして開発された、字句スコープの純粋関数型Lispのサブセット( Pure Lisp )です。最初は遅延評価の初期実験に使用されました。開発者の Peter Henderson は 1980 年に、ALGOL の派生言語で書かれたスタック、環境、制御、ダンプ仮想マシンおよび抽象マシン( SECD マシン)に基づく実装を公開しました。 [ 1 ]コンパイラと仮想マシンは移植性が高く、その結果、多くのマシンで実装されています。[ 2 ] [ 3 ]
基本言語では以下の機能のみが提供されますが、遅延評価と非決定性プログラミングの明示的なサポートについては、ヘンダーソンの著書[ 1 ]で説明されています。
atom式が与えられた場合、その値がアトミックであれば True を返し、そうでなければ False を返します。add– 2つの式が与えられた場合、それらの数値の合計を返しますcar– 値がペアである式が与えられた場合、そのペアの最初の値を返します。cdr– 値がペアである式が与えられた場合、そのペアの2番目の値を返します。cons– 2つの式が与えられた場合、それらの値からなる値ペアを返します。div– 2つの式が与えられた場合、それらの数値の商を返しますeq2つの式が与えられた場合、値が等しい場合はTrueを返し、等しくない場合はFalseを返します。if– 3つの式が与えられた場合、最初の式の値がTrueであれば2番目の式の値を返し、そうでなければ3番目の式の値を返します。lambda引数リストと式が与えられた場合、それらを関数として返します。let– 宣言(式内で見える名前付き式)を含む式が与えられた場合、その値を返します。letrec―letと同様だが、宣言された名前は宣言自体にも表示される。leq– 2 つの式が与えられた場合、最初の式の値が 2 番目の式の値以下であれば True を返し、そうでなければ False を返します。mod(またはrem)2つの式が与えられた場合、それらの数値の剰余(余りとも呼ばれる)を返します。mul– 2つの式が与えられた場合、それらの数値の積を返します。quote式が与えられた場合、その式を値として返します。sub– 2つの式が与えられた場合、それらの数値の差を返します。関数 、lambda、letおよび はletrec似ていますが、名前付き変数の扱い方に微妙な違いがあり、それぞれ異なる用途で役立ちます。lambdaは関数を定義して返し、letは式を変数名にバインドし、letrecは基本的に と似ていますが、無限級数などの再帰関数と値letの定義が可能です。