24

少なくとも1990年代後半にさかのぼると、制限されたモナドを友好的な方法でHaskellに統合することを望んでいる人々がいました。

たとえば、制限されたモナドがないと、、または確率分布から効率的なモナドを作成することはSetできMapませ。これは、他の誰かがこの問題に反抗した数年前のSOの質問です。

人々が思いついたさまざまな回避策があります。

ただし、これらのアプローチはいずれも「標準的」ではないようです。2007年に、このブログ投稿でDon Stewartからのコメントを見つけました。彼は、インデックス付きタイプのモナドを制限することに「非常に近い」とほのめかしました。

現在の状況は?制限されたモナドを実行するための「標準的な」方法はありますか?それとも、私たちはまだ回避策を持って生きていますか?

4

2 に答える 2

12

Anders Persson、Emil Axelsson、および Josef Svenningson による最近の論文で、制限されたモナドをエンコードする方法が示されています。詳細は忘れましたが、いい紙だった記憶があります。

パーソン、A.; アクセルソン、E.; Svenningsson、J.(2011)。埋め込み言語用の一般的なモナド構造。IFL 2011、関数型言語の実装と応用に関する第 23 回シンポジウム。

于 2012-07-22T18:48:06.787 に答える
11

実際、効率的な Set モナドを通常のモナドとして取得することは、何の制限もなく可能です。2 つの異なる方法で。次の記事では、両方について説明します。

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

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

于 2013-07-26T06:26:26.677 に答える