Egison とはどういうもの?

Egison は柔軟なパターンマッチの表現力を特徴とするプログラミング言語です。
多重集合や集合を含む幅広いデータ型に対して柔軟なパターンマッチが行うことができるのが特徴です。
例えば、ポーカーの役判定麻雀の上がり判定双子素数の列挙をパターンマッチで記述できます。

Egison とはどう読むの?名前の由来は?

Egi-son (エギソン) という名前は Egison の作者の名前 Satoshi Egi に由来して名付けられました。
彼 (Egi) が生み出したということを明確にする命名になっています。

どうして新しい言語を作ったの?

Egison のパターンマッチを組み込むことはプログラミング言語の設計全体に大きな影響があります。
強力な表現力を持つパターンや、パターンマッチの方法をデータ型毎に保持するためのマッチャーという概念は、関数と同じくらい重要な役目を持ちます。
Egison のパターンマッチを導入することにより、設計の際の最良の選択が変わることがありえるのです。
また、色々な実験を気軽に行いたいと考えていたので、自身で新しいプログラミング言語を作りました。

開発の歴史を聞かせてください!

Egison の歴史にまとめてあります。
是非読んでみてください。

パターンマッチについての既存研究はたくさんあります。
その中で、Egison の強みは以下の全ての機能を同時に実現していることです。

  • 非線形パターン
  • 複数の結果を持つパターンマッチング
  • パターンマッチの方法のモジュール化

これにより、強力で直感的なパターンマッチを実現しています。

さらに Egison は以下の機能も実現しています。
上記の機能を持ちながら、パターンのモジュール化も行うことができます。

  • 静的スコープを保ったパターンのモジュール化

論理型言語との違いは?

Egison のパターンマッチは Prolog と同じくバックトラックを行います。
しかしながら、Egison と Prolog をはじめとした論理型言語との違いは、Egison はパターンマッチ式にその強力な表現力を実現した点です。
Prolog のパターンマッチ式自体は既存の関数型言語のパターンマッチと表現力は変わりません。

論理型プログラミングのユニフィケーションと、パターンマッチの統合は簡単ではありません。
その挑戦をした既存の研究結果にプログラミング言語 Curry があります。

どうすれば貢献できる?

Egison 作者にフィードバックをください。
そしてもしよろしければ、Egison について話したり書いてみてください。
Egison 作者にとって一番楽しいことは、様々な背景をもつ方々が書いた Egison プログラムを読むことです。
Egison は作者も想像していない方法で色々な分野で大きく役立つと信じています。

もし、他の言語、例えば Haskell や、Python、Javascript で Egison のパターンマッチが使えるようなパターンマッチを書いて頂けると非常に有難いです。
これらの仕事には非常に大きなインパクトがあると Egison の作者は考えています。
また作者自身も実装したいと考えています。
しかし、作者には今のところそれぞれの言語について拡張できるほどの知識がまだ足りていません。
Ruby 拡張は Egison 作者により既に作られました。

次に見てほしいもの...

トップに戻る