Loading article…
Escher(「無限ループの達人」として知られるMC Escherにちなんで名付けられた)は、1990年代半ばにJW Lloydによって開発された、関数型プログラミングと論理プログラミングの両方のモデルをサポートする宣言型プログラミング言語です。主に研究と教育の手段として設計されました。Escherおよび関連言語に見られるプログラミングの基本的な考え方は、プログラムは何らかの論理フレームワークにおける理論の表現であり、プログラムの実行(計算)はその理論からの演繹であるというものです。Escherの論理フレームワークは、Alonzo Churchの単純な型理論です。
Escherは、 Haskellのスタイルに倣い、「外部世界」を表すモナド型を通して入出力(I/O)をサポートしている点が特筆すべきである。Escherの設計者たちの目標の一つはメタプログラミングをサポートすることであり、そのためこの言語はプログラムの生成と変換を包括的にサポートしている。
モジュール ラムダ。 構築する人/0。 機能:ジェーン、メアリー、ジョン:1 → 人。 FUNCTION Mother : Person * Person -> Boolean。 母(x,y) => x=ジェーン、y=メアリー。 FUNCTION Wife : Person * Person -> Boolean。 妻(x,y) => x=ジョン、y=ジェーン。 FUNCTION PrimitiveRel : (Person * Person -> Boolean) -> Boolean. PrimitiveRel(r) => r=母 \/ r=妻。 FUNCTION Rel : (Person * Person -> Boolean) -> Boolean。 関係(r) => PrimitiveRel(r) \/ (一部 [r1,r2] (r = LAMBDA [u] (SOME [z] (r1(Fst(u),z) & r2(z,Snd(u)))) & PrimitiveRel(r1) & PrimitiveRel(r2)))。