問題タブ [monoids]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - Alternative 型クラスが Control.Applicative のサブクラスである必要があるのはなぜですか
<|>
Haskell は、Applicative でもある任意の型の演算子を効果的に提供する標準型クラス 'Alternative' を提供します。
私が理解しているように、Alternative は Applicative のモノイドと見なされますが、<|>
演算子は Applicative Functor ではない多くの型でも完全に意味があるようであり、Applicative 型クラスに特定の依存関係がある必要はありません。正しく動作するようにします。
Alternative が Applicative のサブクラスである必要がある理由はありますか?もしそうなら、非適用型で同様の機能を定義する標準型クラスはありますか?
xml - Scalaでモノイドを使用してXMLをチェックするには?
たとえば、入力 XML を検証する必要があるとします。
そのルート要素に label と、それぞれ labels 、 、および text を持つ子があることを確認"a"
する"a1"
必要"a2"
が"a3"
あります。"a1a1a1"
"a2a2a2"
""
基本的な検証関数を次のように定義できます。
Status
はモノイド (リストに同型)であるためValidate[A]
、 もモノイドであり、検証関数を次のように構成できます。|+|
それは理にかなっていますか?どのように修正/改善しますか?
scala - ADT から一般的なモノイドを作成する方法
既存の ADT がある場合、一般的なモノイドを作成することは可能ですか。
これからは、ADT にクラスと同じ数のモノイドがありますが、DRY ではありません。
コードは次のとおりです。
私は何かが欲しいのですが、繰り返しのためにこのコードは醜いことがわかりました:
haskell - タイプアラインされたシーケンスのfoldMapの観点からfoldrを表現するにはどうすればよいですか?
私はtype-aligned sequenceで遊んでいます。特に、それらを折りたたむというアイデアをいじっています。折り畳み可能な型整列シーケンスは次のようになります。
最初に を使用して、単純な方法でシーケンスを型整列リストに変換し (つまり、型整列リスト カテゴリを使用)、次にそのリストを折りたたむfoldrTA
という点で、実装は非常に簡単です。残念ながら、長いリストは短いリストの前に追加される可能性があるため、これは非常に非効率的です。右と左の折り目をより効率的に定義するために使用したのと同様のトリックを使用する方法を見つけようとしていますが、そのタイプにはめまいがします。トリックを実行するのに十分なほど一般的ではないようであり、他の方向に進むたびに、追跡できるよりも多くの型変数につながります.foldMapTA
foldMapTA
Data.Foldable
Endo
haskell - 関数の上の折り畳み - モノイド
リストの長さの上の折り畳みがモノイドでないのはなぜですか?
length = foldr (\_ n -> 1+n) 0
0
連想的であり、モノイドであるべきようにニュートラルな要素を持っていますか?
haskell - オルタナティブではできるが、モノイドではできないことは何ですか?
Monad + Monoid ではなく、なぜ MonadPlus なのかを読みました。理論的な違いは理解できますが、リストの場合は同じに見えるため、実際の違いを理解することはできません。
はい。実装が異なる可能性があります
しかし、Alternative と同じ方法で Maybe Monoid を実装できます。
では、オルタナティブとモノイドの実際的な違いを説明するコード例を誰かが示すことができますか?
質問は、なぜ MonadPlus ではなく Monad + Monoidの複製ではありませんか?
haskell - モノイドに関する私の理解は有効ですか?
だから、私は現在Haskellを学んでおり、モノイドの理解を確認したり、暴言を吐いたりしたいと思います。
CIS194コースを読んでわかったことは、モノイドは基本的に、カスタム セットでカスタム バイナリ操作を定義するための「API」であるということです。
私が自分自身にもう少し知らせに行ったよりも、物事を明確にしようとする非常に紛らわしい大量のチュートリアルに出くわしたので、もうよくわかりません.
私はまともな数学的背景を持っていますが、すべての比喩から混乱してしまい、モノイドの理解に対する明確なイエス/ノーの答えを探しています.
list - Haskell のリストのリストにリストを追加する
リストのリストにリストを追加するにはどうすればよいですか? リストのリストであるに追加itemz
したいとします。bagList
どうやってやるの?
haskell - なぜクライスリはモノイドのインスタンスではないのですか?
タイプ (a -> mb) の 2 つの関数を追加して、両方の結果を追加する同じタイプの関数を 1 つだけ取得する場合は、Kleisli を使用できます。
ただし、現在、 で定義されているそのようなインスタンスはありませんControl.Arrow
。Haskell ではよくあることですが、正当な理由があるのではないかと疑っていますが、どれかを見つけることができません。
ノート
この質問は、この質問にかなり似ています。ただし、モノイドでは、次のようなインスタンスを定義する方法がわかりません。
すでにインスタンスがあるため: