問題タブ [homomorphism]

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 投票する
0 に答える
393 参照

c++ - 継承による準同型のモデリング

ポーカーハンドのモデルになりたいです。数学的なバックグラウンドとそれを C++ に取り込むことは、非常に正気ではありません。

標準的な 52 枚のカード デッキでは、2 枚のカードの組み合わせを 1326 通り作成できます。ただし、これらのカードを 169 のカテゴリに分けることができます。カテゴリには、ペア (TT など)、スーテッド (AsKs)、オフスーテッド (AcKd) などの同形のハンドが含まれます。これは、一連のポーカーハンド (TT+、22-55、A9s+ など) を記述する一般的な不可知論的ポーカー言語のサブセットです。

そうは言っても、私の問題は、継承を介して 169 の手と 1326 の手の間の準同型をモデル化することです。Hand169から派生したHand1326 IDです。したがって、クラスは次のようになります

しかし、ここでの問題は、Hand169 が適性に関する情報 ( bool suit) を持っている必要があることです。これは Hand1326 では冗長になりsuit1ますsuit2rank1ペアであるかどうかに関する情報は、およびを通じて暗黙的に与えられrank2ます。

冗長性なしで、これをモデル化するより良い方法はありますか?

0 投票する
3 に答える
847 参照

haskell - 「インターリーブ準同型」の概念は本当ですか?

次のクラスの関数が必要です。

明らかに、私が発明した名前は、いかなる意味でも正式な用語ではなく、上記の型クラスはあまりエレガントではありません。これは名前を持つ概念ですか、それともいくつかのライブラリで実装されていますか? これを行うためのより合理的な方法はありますか?


この関数の目的は、fいくつかのデータに注釈を付けるコンテキストがあることです (この質問のためのランダムなデータ構造の例です) Foo:Bar

ポリモーフィックな方法でデータのコンテキストを変換したいと思います。コンテキスト間の準同型性のみを知っており、(必然的に) データ自体を気にする必要はありません。これは、上記の例ではinstance InterleavedHomomorphic Fooandを指定することで実行できます。instance InterleavedHomomorphic Bar

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

haskell - Applicative インスタンスの準同型法則をテストするには?

Typeclassopediaの演習を行っています。の項にの関数Applicativeを書き、法則に従っているかどうかをチェックします。ZipListpureApplicative

私はチェックしました:

  • 同一性法
  • 交流法
  • 合成法

しかし、「準同型」の法則をチェックしようとすると、GHCi が結果を として得ていないことがわかりましたMZipList

pureこれは、Applicative型クラスに を指定するのを忘れたためだと思います。pure関数<*>をすぐに実行せずに実行するにはどうすればよいApplicativeですか?</p>

MZipList定義とクラス インスタンスは次のとおりです。

たとえば、「インターチェンジ」法を確認すると、次のようになります。

しかし、「Homomorphism」法をチェックすると、MZipListpure呼び出されません:

何故ですか?

0 投票する
2 に答える
379 参照

scala - モノイド準同型と同型

「Programming in Scala」(赤い本) という本を読んでいます。

モノイドに関する章で、モノイド準同型が何であるかを理解しています。たとえばM、連結とlength関数を使用した文字列モノイドfはモノイド構造を保持するため、準同型です。

本を引用します(記憶によるので、間違っていたら訂正してください:

これが両方向で発生する場合、モノイド同型写像と呼ばれます。これは、モノイドM, N、関数f, gf andThen gおよびg andThen fが関数であることを意味しidentityます。たとえば、StringモノイドList[Char]と連結を伴うモノイドは同形です。

しかし、これを見るための実際の例を見ることはできません。関数としてしか考えられませんが、どうなりfますか?lengthg

注: 私はこの質問を見ました: What are is isomorphism and homomorphisms .