2012-07-22 14 views
24

少なくとも1990年代後半には、restricted monadsをハスケルに友好的に統合しようとする人々がいました。制限付きモナドの現在の状況は何ですか?

たとえば、限定されたモナドなしでは、Set,Mapまたはprobability distributionsから効率的なモナドを作ることはできません。ここ数年前のSO questionから、他の誰かがこの問題に遭遇しました。あらゆる可能な制限のためnew type classを作成

  • は、様々な人々を含む、が出ているという回避策があります。

  • Template Haskellを使用してください。

  • Constraint Kindsを使用します。

ただし、これらのアプローチはいずれも「標準」ではないようです。私はthis blog postのDon Stewartから、Indexed typesで制限されたモナドを「非常に近い」と暗示した2007年のコメントを見つけました。

現在のステータスは何ですか?制限されたモナドを行うための「カノニカル」な方法が今ではありますか?あるいは、私たちはまだ回避策を生きていますか?

+12

私は制約の種類については正式なものだと思っていますが、それはまだ最も珍しいものです。 – leftaroundabout

答えて

11

Anders Persson、Emil Axelsson、Josef Svenningsonの最近の論文で、制限付きモナドをエンコードする方法を示しています。細部を忘れてしまったが、それは素敵な紙だった。

Persson、A.; Axelsson、E。 Svenningsson、J.(2011)。 Generic monadic constructs for embedded languages。 IFL 2011、第23回機能的言語の実装と応用に関するシンポジウム。

+1

ノーマンありがとうございます。興味のある方は、[Josef Svenningsonのホームページ](http://www.cse.chalmers.se/~josefs/)からコピーを入手できます。 –

10

実際には、効率的なセットモナドを通常のモナドのように、何も制限なしに得ることができます。 2つの異なる方法で。次の記事 の両方を説明します

http://okmij.org/ftp/Haskell/set-monad.html

記事では、制限されたモナドは実際には非常に が制限され、多くのモナドイディオムを排除していることを指摘しています。私は、 の実装方法は一般的であり、制限されたモナドは効率を失うことなく通常のものに変更することができると推測しています。だから、制限されたモナドが全く必要ないと思われるかもしれません。

+0

効率的な確率分布モナドを構築するために、効率的なSetモナドの背後にあるアイデアを実際に使っています(https://github.com/chris-taylor/hs-probability/blob/master/src/Control/Probability/Bayes.hsを参照)。 ) .. ほんとありがと!私は他の制限されたモナドに対して同じことをすることを考えなかったが、それがうまくいかない理由をすぐには知ることができない。 –

関連する問題