のドキュメントを見ると、Control.Applicative
特定のモナド(たとえばIO
、Maybe
特に)のインスタンス宣言がありますが、やST
などのMTLモナドのインスタンスはありません。代わりに、汎用タイプが定義されているように見えます。これは、他のすべてのケースをカバーするためだと思います。State
RWS
WrappedMonad
だからここに私の質問があります:
Applicative
MTLモナドのインスタンスがないのはなぜですか?私がこれまでに自分で見つけた最良の答えは、3年前の投稿で、誰かがこれらのインスタンスを実装し、すぐに無視されました。どうしたの
WrappedMonad
?Redditに簡単に説明している投稿を見つけましたが、使い方がわからないと思います。
最終的には、(私が推奨したようにState
)アプリケーションスタイルで使用できるようにしたいと思いますが、コードにデータコンストラクターを散らかす必要がある場合、それは成功とは思えません。また、完全に無視して、インスタンスを自分で定義することもできます。たとえば、などの場合と同じように、インスタンスを定義します。WrappedMonad
WrappedMonad
Applicative
IO
ST
return
ap