問題タブ [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.

0 投票する
1 に答える
1864 参照

haskell - 空でない文字列になるまで haskell で行を読み取る

空でない行が見つかるまで、Haskell の入力から行を読み取ろうとしています。実際、次のコードを使用して簡単に行う方法を知っています。

テスト(2行の空行を入力してから「foo」を入力しました):

ただし、演​​習のために、Monoids ( http://learnyouahaskell.com/functors-applicative-functors-and-monoids#monoids ) を使用してこれを達成しようとしています。First/getFirst Monoid を模倣しようとしています (リンクを参照)。 .

最初に、ニーズに合ったリストにモノイドを作成しました (連結は最初の引数のみを保持します)。

これは、文字列の無限リストでうまく機能します (怠惰のおかげです):

ただし、IOモナドで動作させることはできません。私は次のことを試しました:

正しいタイプは次のとおりです。

しかし、Haskell は、リスト全体を評価してから、リスト全体を評価したいと考えていmconcatます。

0 投票する
1 に答える
194 参照

sml - 標準 ML で多相リストモノイドを表現する方法

最近、標準 ML でモノイドをいじっていました。署名は簡単に書けます:

また、整数加算モノイドなどの単純なモノイドも同様です。

しかし、 のような高カインド型のモノイドを定義するのに行き詰まってしまいましたlist。もちろん、これはコンパイルされません。

いくつか検索した後、ファンクターに基づいて次の解決策を見つけました。

私の質問は、ジェネリック リスト モノイド、理想的には宣言を必要としないものを宣言するための代替手段が存在するかどうかですfunctor。リストのモノイドを宣言しようとするとき、含まれているリストの型を知る必要がないことは明らかです。

0 投票する
1 に答える
87 参照

c# - この署名は何ですか { zero : α; 追加: α -> β -> α; } 名前?

Monoid および Builder インターフェースがあります。

また、Monoid から Builder への変換アルゴリズムを実装したい。私はこれをやろうとしましたが、次のようなものを作成しました:

しかし、実際のタスクでは、このアイテムのリストにアイテムを蓄積できる Builder と、同じ蓄積原理を持つ他の Builder が必要です。私のビルダーは、次のインターフェイスを実現する必要があります。

そして、{ zero, append } 署名から Builder を作成できるようにする必要があります。このような:

新しい状況のために次の BuilderMakerFor を実装しました:

1 点を除いてすべて問題ありません。X の名前の付け方がわかりません。

名前はモノイド。

とは

名前?

0 投票する
1 に答える
387 参照

scala - Scalaz `Tag.apply`: どのように機能しますか?

こんにちは、高度な Scala の本を読んでいますが、scalaz ソースからのこのコードを理解するのに苦労しています。

どのように機能しますか?a.asInstanceOf[A @@ T]ClassCastException で失敗するはずですよね?

使用例は次のとおりです。

この場合aは Int ですが、どのように@@[Int, Multiplication]( Tagged[Int, Multiplication])に変換できますか?

助けてくれてありがとう。

0 投票する
1 に答える
181 参照

xml - 一度に 1 つの要素を追加する矢印

ArrowPlusこの質問はHXTに関するものですが、一般的な概念に当てはまると思い ます。次のプログラムを検討してください。

に何が保存されるか分かりますtest.xmlか? 私の期待:

私のロジック: 矢印barはすべての入力をコピーし、1 つの「バー」要素を追加します (thisアイデンティティ矢印のエイリアスです):

したがって、結果は3 つの 'bar' 要素である必要があります (ファミリの矢印は入力を無視し (内容を生成するために使用することはできますが)、新しく作成された要素のみを出力するため、1 つの 'bar' 要素のみになることにbar >>> bar >>> bar注意してください)。 .eelem "bar" >>> eelem "bar"mkelem

test.xml以上のことを踏まえて、プログラム実行後の内容を示します。

質問:

  1. とは<//>?

  2. 'bar' 要素が 3 つではなく 7 つあるのはなぜですか? この重複の理由は何ですか?

  3. なぜ私が得ると置き換えるbar >>> bar >>> barnone >>> bar >>> bar >>> bar

noneゼロの矢印はどこにありますか。ここでは矢印のモノイドを扱いますよね? none(≡ zeroArrow) はその ID である必要があるため、次のようになります。 none <+> eelem "bar"これは「bar」要素を生成し、後続の呼び出しは 2 つの別の要素を追加する必要があります。しかし、何も得られません!

  1. bar一度に 1 つの「バー」要素を追加する適切なバージョンの矢印を作成するにはどうすればよいですか?

4つも質問して申し訳ありませんが、関係は深いと思いますので問題ありません。