Lispkit Lisp

Lispkit Lisp
パラダイム純粋関数型
ファミリーLisp
設計者ピーター・ヘンダーソン
初登場1980年; 46年前 (1980)
スコープ語彙
実装言語アルゴル
影響を受けた
ALGOLLisp

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つの式が与えられ、それらの数値の差を返します

関数 、lambdaletletrec類似していますが、名前付き変数の扱い方に微妙な違いがあり、それによってそれぞれ異なる方法で役に立ちます。lambdaは関数を定義して返し、式を変数名にバインドします。 は、無限級数などの再帰関数と値を定義できることを除けばletletrec基本的に と類似していますlet

参考文献

  1. ^ ab ピーター・ヘンダーソン(1980年)『関数型プログラミング:応用と実装』プレンティス・ホール、ISBN 0-13-331579-7
  2. ^ ポール・マクジョーンズ(2014年5月12日)「オリジナルOUCL PRG LispKit」。コンピュータ歴史博物館:ソフトウェア保存グループ。カリフォルニア州マウンテンビュー:オックスフォード大学 – Plone Foundation経由
  3. ^ McJones, Paul (2014年5月12日). 「Aaron GrayによるLispKitのGNU Pascalへの移植」.コンピュータ歴史博物館:ソフトウェア保存グループ. カリフォルニア州マウンテンビュー:Cyber​​comms.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実装とその実装に関する論文
Retrieved from "https://en.wikipedia.org/w/index.php?title=Lispkit_Lisp&oldid=1263038062"