エッシャー(プログラミング言語)

エッシャー
パラダイム宣言的機能的論理的
デザイン:JWロイド
初登場1990年代半ば
タイピングの規律静的明示的
主要な実装
Kee Siong Ngの実装
影響を受けた
単純な型理論

Escher(「無限ループの達人」として知られるMC Escherにちなんで名付けられた)は、関数型プログラミング論理プログラミングの両方のモデルをサポートする宣言型プログラミング言語で、1990年代半ばにJW Lloydによって開発されました。主に研究と教育の手段として設計されました。Escherおよび関連言語が示すプログラミングの基本的な考え方は、プログラムは何らかの論理フレームワークにおける理論の表現であり、プログラムの実行(計算)は理論からの演繹であるというものです。Escherの論理フレームワークは、Alonzo Churchシンプルな型理論です。

注目すべきことに、EscherはHaskellスタイルの「外界」を表すモナド型を通じてI/Oをサポートしています。Escherの設計者の目標の一つはメタプログラミングのサポートであり、そのためこの言語はプログラムの生成と変換を包括的にサポートしています。

モジュール ラムダ。 CONSTRUCT 人/0。 FUNCTION ジェーン、メアリー、ジョン: 1人 -> 人。 FUNCTION Mother : Person * Person -> ブール値。 母(x,y) => x=ジェーン、y=メアリー。 FUNCTION Wife : Person * Person -> ブール値。 妻(x,y) => x=ジョン、y=ジェーン。 FUNCTION PrimitiveRel : (Person * Person -> Boolean) -> Boolean。 プリミティブRel(r) => r=母 \/ r=妻。 FUNCTION Rel : (Person * Person -> Boolean) -> Boolean。 相対(r) => プリミティブRel(r) \/ (一部[r1,r2] (r = LAMBDA [u] (SOME [z] (r1(Fst(u),z) & r2(z,Snd(u)))) & PrimitiveRel(r1) & PrimitiveRel(r2)))。 

参考文献