タグ付けされた質問 「monad-transformers」


3
mtl、transformers、monads-fd、monadLib、および選択したパラドックス
Hackageにはモナド変換のためのいくつかのパッケージがあります: mtl:モナド変換ライブラリ トランスフォーマー:コンクリートファンクターおよびモナドトランスフォーマー monads-fd:関数の依存関係を使用するモナドクラス monads-tf:タイプファミリーを使用するモナドクラス monadLib:モナド変換子のコレクション。 mtl-tf:タイプファミリーを使用するモナド変換ライブラリ。 mmtl:モジュラーモナド変換ライブラリ mtlx:タイプインデックス付きのモナド変換ライブラリ。「無料」のコピーを提供します。 compose-trans:合成可能なモナド変換子 (そしておそらく私はいくつかを逃した) どれを使用しますか? mtlはHaskellプラットフォームの1つですが、redditはクールではないと聞いています。 とにかく、選択の何が悪いのですか、それはただ良いことではありませんか? ええと、たとえば、データアクセサーの作成者がこれらすべてを、人気のある選択だけに応えるために作成しなければならない方法を見ました。 data-accessor-monadLibライブラリ:monadLibのモナドのアクセサ関数 data-accessor-monads-fdライブラリ:アクセサを使用してモナドfd状態モナドクラスの状態にアクセスする data-accessor-monads-tfライブラリ:アクセサーを使用してモナドtf状態モナドタイプファミリーの状態にアクセスする data-accessor-mtlライブラリ:Accessorを使用してmtl Stateモナドクラスの状態にアクセスする data-accessor-transformersライブラリ:アクセサーを使用してトランスフォーマーの状態モナドの状態にアクセスする これが続き、たとえばいくつかの競合するArrowパッケージが進化した場合、spoonklink-arrows-transformers、spoonklink-arrows-monadLib、spoonklink-tfArrows-transformers、spoonklink-tfArrows-monadLib、...のように見えるかもしれません。 そして、spoonklinkがフォークされると、Hackageがディスク領域を使い果たしてしまうのではないかと心配しています。:) 質問: なぜそれほど多くのモナド変換パッケージがあるのですか? なぜmtlはクールでないと考えられていますか? 主な違いは何ですか? これらの競合しているように見えるパッケージのほとんどは、Andy Gillが作成し、Ross Patersonが保守しています。これは、これらのパッケージが競合しているのではなく、何らかの方法で連携していることを意味しますか?AndyとRossは、独自のパッケージを廃止されたと見なしていますか? あなたと私はどちらを使うべきですか?

3
Haskell:lift vsliftIO
どのような状況liftIOで使用する必要がありますか?を使用している場合ErrorT String IO、このlift関数はIOアクションをに持ち上げるために機能するためErrorT、liftIO不要に思えます。

2
ハスケルの入れ子になった州
やや異なる種類の状態を持つ状態マシンのファミリーを定義しようとしています。特に、より「複雑な」状態機械には、より単純な状態機械の状態を組み合わせることによって形成される状態があります。 (これは、オブジェクトがオブジェクトでもあるいくつかの属性を持つオブジェクト指向の設定に似ています。) これが私が達成したいことの簡単な例です。 data InnerState = MkInnerState { _innerVal :: Int } data OuterState = MkOuterState { _outerTrigger :: Bool, _inner :: InnerState } innerStateFoo :: Monad m => StateT InnerState m Int innerStateFoo = do i <- _innerVal <$> get put $ MkInnerState (i + 1) return i outerStateFoo …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.