この記事には複数の問題があります。改善にご協力いただくか、トークページでこれらの問題について議論してください。(これらのメッセージを削除する方法とタイミングについてはこちらをご覧ください)
|
| Lispkit Lisp | |
|---|---|
| パラダイム | 純粋関数型 |
| ファミリー | Lisp |
| 設計者 | ピーター・ヘンダーソン |
| 初登場 | 1980年 (1980) |
| スコープ | 語彙 |
| 実装言語 | アルゴル |
| 影響を受けた | |
| ALGOL、Lisp | |
Lispkit Lispは、関数型プログラミングの概念のテストベッドとして開発された、Lispのレキシカルスコープを持つ純粋関数型のサブセット(Pure Lisp)です。最初は遅延評価の初期の実験に使用されました。スタック、環境、制御、ダンプ仮想マシン、抽象マシン(SECDマシン)に基づく実装は、 ALGOLの派生言語で書かれ、開発者のPeter Hendersonによって1980年に公開されました。[1]コンパイラと仮想マシンは移植性が高く、その結果、多くのマシンに実装されています。[2] [3]
基本言語
基本言語は以下の機能のみを提供しますが、遅延評価と非決定性プログラミングを明示的にサポートするための拡張機能については、 ヘンダーソンの著書[1]で説明されています
atom– 式が与えられた場合、その値がアトミックであればTrueを返し、そうでない場合はFalseを返すadd– 2つの式を与えると、その数値の合計を返しますcar– 値がペアである式が与えられた場合、ペアの最初の値を返しますcdr– 値がペアである式が与えられた場合、ペアの2番目の値を返しますcons– 2つの式を与えると、それらの値からなる値のペアを返しますdiv– 2つの式を与えて、それらの数値の商を返すeq– 2つの式が与えられた場合、値が等しい場合は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
参考文献
- ^ ab ピーター・ヘンダーソン(1980年)『関数型プログラミング:応用と実装』プレンティス・ホール、ISBN 0-13-331579-7。
- ^ ポール・マクジョーンズ(2014年5月12日)「オリジナルOUCL PRG LispKit」。コンピュータ歴史博物館:ソフトウェア保存グループ。カリフォルニア州マウンテンビュー:オックスフォード大学 – Plone Foundation経由
- ^ McJones, Paul (2014年5月12日). 「Aaron GrayによるLispKitのGNU Pascalへの移植」.コンピュータ歴史博物館:ソフトウェア保存グループ. カリフォルニア州マウンテンビュー:Cybercomms.org – Plone Foundation経由.
さらに詳しい情報
- ヘンダーソン、ピーター、ジョーンズ、ジェラント・A、ジョーンズ、サイモン・B(1983年12月1日)。LispKitマニュアル。オックスフォード大学コンピューティング研究所。ISBN 978-0902928183。
- ヘンダーソン、ピーター、ジョーンズ、ジェラント・A、ジョーンズ、サイモン・B(1983年12月1日)。LispKitマニュアル:第1巻(PDF)。オックスフォード、イギリス:オックスフォード大学:コンピューティング研究所:プログラミング研究グループ
- Henderson, Peter; Jones, Geraint A.; Jones, Simon B. (1983年12月1日). LispKitマニュアル 第2巻(PDF) . オックスフォード大学(イギリス):コンピューティング研究所: プログラミング研究グループ.
外部リンク
- 古いLispKit Lispコードとファイル、およびSECDマシンのC実装のアーカイブ
- JavaでのLispKit Lisp実装とその実装に関する論文