問題タブ [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.
c++ - 継承による準同型のモデリング
ポーカーハンドのモデルになりたいです。数学的なバックグラウンドとそれを C++ に取り込むことは、非常に正気ではありません。
標準的な 52 枚のカード デッキでは、2 枚のカードの組み合わせを 1326 通り作成できます。ただし、これらのカードを 169 のカテゴリに分けることができます。カテゴリには、ペア (TT など)、スーテッド (AsKs)、オフスーテッド (AcKd) などの同形のハンドが含まれます。これは、一連のポーカーハンド (TT+、22-55、A9s+ など) を記述する一般的な不可知論的ポーカー言語のサブセットです。
そうは言っても、私の問題は、継承を介して 169 の手と 1326 の手の間の準同型をモデル化することです。Hand169から派生したHand1326 IDです。したがって、クラスは次のようになります
しかし、ここでの問題は、Hand169 が適性に関する情報 ( bool suit
) を持っている必要があることです。これは Hand1326 では冗長になりsuit1
ますsuit2
。rank1
ペアであるかどうかに関する情報は、およびを通じて暗黙的に与えられrank2
ます。
冗長性なしで、これをモデル化するより良い方法はありますか?
haskell - 「インターリーブ準同型」の概念は本当ですか?
次のクラスの関数が必要です。
明らかに、私が発明した名前は、いかなる意味でも正式な用語ではなく、上記の型クラスはあまりエレガントではありません。これは名前を持つ概念ですか、それともいくつかのライブラリで実装されていますか? これを行うためのより合理的な方法はありますか?
この関数の目的は、f
いくつかのデータに注釈を付けるコンテキストがあることです (この質問のためのランダムなデータ構造の例です) Foo
:Bar
ポリモーフィックな方法でデータのコンテキストを変換したいと思います。コンテキスト間の準同型性のみを知っており、(必然的に) データ自体を気にする必要はありません。これは、上記の例ではinstance InterleavedHomomorphic Foo
andを指定することで実行できます。instance InterleavedHomomorphic Bar
haskell - Applicative インスタンスの準同型法則をテストするには?
Typeclassopediaの演習を行っています。の項にの関数Applicative
を書き、法則に従っているかどうかをチェックします。ZipList
pure
Applicative
私はチェックしました:
- 同一性法
- 交流法
- 合成法
しかし、「準同型」の法則をチェックしようとすると、GHCi が結果を として得ていないことがわかりましたMZipList
。
pure
これは、Applicative
型クラスに を指定するのを忘れたためだと思います。pure
関数<*>
をすぐに実行せずに実行するにはどうすればよいApplicative
ですか?</p>
MZipList
定義とクラス インスタンスは次のとおりです。
たとえば、「インターチェンジ」法を確認すると、次のようになります。
しかし、「Homomorphism」法をチェックすると、MZipList
はpure
呼び出されません:
何故ですか?
scala - モノイド準同型と同型
「Programming in Scala」(赤い本) という本を読んでいます。
モノイドに関する章で、モノイド準同型が何であるかを理解しています。たとえばM
、連結とlength
関数を使用した文字列モノイドf
はモノイド構造を保持するため、準同型です。
本を引用します(記憶によるので、間違っていたら訂正してください:
これが両方向で発生する場合、モノイド同型写像と呼ばれます。これは、モノイド
M, N
、関数f, g
、f andThen g
およびg andThen f
が関数であることを意味しidentity
ます。たとえば、String
モノイドList[Char]
と連結を伴うモノイドは同形です。
しかし、これを見るための実際の例を見ることはできません。関数としてしか考えられませんが、どうなりf
ますか?length
g
注: 私はこの質問を見ました: What are is isomorphism and homomorphisms .