タグ付けされた質問 「applicative」

5
Functor / Functor / Applicative / Monadの良い例は?
型クラスXが何であるかを誰かに説明しながら、正確にXであるデータ構造の良い例を見つけるのに苦労しています。 だから、私は次の例を要求します: Functorではない型コンストラクター。 Functorであるが、Applicativeではない型コンストラクター。 Applicativeですがモナドではない型コンストラクタです。 モナドである型コンストラクタ。 どこにでもモナドの例はたくさんあると思いますが、前の例とある程度の関係があるモナドの良い例は、絵を完成させることができます。 特定の型クラスに属するために重要な点のみが異なる、互いに類似する例を探します。 アローの例をこの階層のどこかに忍び込むことができたなら(それはApplicativeとMonadの間ですか?)、それも素晴らしいでしょう!


1
型クラスMonadPlus、Alternative、Monoidの違いは?
標準ライブラリHaskellの型クラスMonadPlus、AlternativeおよびMonoidそれぞれが本質的に同じセマンティクスを持つ2つのメソッドを提供します。 空の値:mzero、empty、またはmempty。 オペレータa -> a -> a:一緒に型クラスの値を結合しmplus、<|>またはmappend。 3つすべてが、インスタンスが準拠する必要がある次の法律を指定します。 mempty `mappend` x = x x `mappend` mempty = x したがって、3つの型クラスはすべて同じメソッドを提供しているようです。 (Alternativeも提供someしてmany、彼らのデフォルトの定義は、通常は十分であるので、彼らはこの質問の面であまり重要ではないです。) だから、私の質問は:なぜこれらの3つの非常に類似したクラスがあるのですか?スーパークラスの制約が異なる以外に、それらの間に実際の違いはありますか?

2
純粋なApplicativesの必要性
HaskellのApplicativesを学習しています。pureたとえば、関数は実際には必要ないようです(おそらく間違っています)。 pure (+) <*> [1,2,3] <*> [3,4,5] 次のように書くことができます (+) <$> [1,2,3] <*> [3,4,5] 誰かpureが明示的なマッピングよりも関数が提供する利点を誰かに説明できますかfmap?

3
すべての固定サイズのコンテナーは強力なモノイドのファンクターですか、その逆ですか?
Applicative型クラスは、型指定された機能のカテゴリにデカルトmonoidal構造を保持ずさんmonoidalファンクタを表します。 言い換えると(,)、モノイド構造を形成する正準同型が見られる場合: -- Implementations left to the motivated reader assoc_fwd :: ((a, b), c) -> (a, (b, c)) assoc_bwd :: (a, (b, c)) -> ((a, b), c) lunit_fwd :: ((), a) -> a lunit_bwd :: a -> ((), a) runit_fwd :: (a, ()) -> a runit_bwd :: a -> (a, …

1
ArrowとApplicativeとは異なり、相互イールドによってArrowApplyとMonadsが同等になるのはなぜですか?
これが私が参照するSOの投稿です。また、資料を分離しないために、その質問ではOPと同じスニペットを使用します。 インスタンスがモナドを生成すること、およびその逆が広く知られていArrowApplyます。 newtype ArrowMonad a b = ArrowMonad (a () b) instance Arrow a => Functor (ArrowMonad a) where fmap f (ArrowMonad m) = ArrowMonad $ m >>> arr f instance Arrow a => Applicative (ArrowMonad a) where pure x = ArrowMonad (arr (const x)) ArrowMonad f <*> ArrowMonad x …

1
Traversablesの自然法はどういう意味ですか?
自然法は次のように述べています: t . traverse f == traverse (t . f) -- for every applicative transformer t 法則のRHSの場合、fの型がの場合、関数構成のためApplicative a => x -> a y、tはの型でなければなりません(Applicative a, Applicative b) => a y -> b y。 LHSの場合、トラバースfのタイプは(Applicative a, Traversable c) => c x -> a (c y)です。しかし、トラバースfはtで構成されているためです。トラバースf、tのタイプは(cx-> a(cy))-> b yでなければなりません。 LHSの場合、tの型はa(cy)-> byですが、RHSの型はay-> b yです。タイプの観点から法律はどのように聞こえますか? …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.