Haskell:モノイド圏の射の合成

ベンジャミンバーガー

モノイド圏クラスについて次の定義があります(標準ライブラリに似ていますが、必要な自然同型の逆を提供します)。

class (Category r, Category s, Category t) => Bifunctor p r s t | p r -> s t, p s -> r t, p t -> r s where
  bimap :: r a b -> s c d -> t (p a c) (p b d)
--
class (Bifunctor b k k k) => Associative k b where
  associate :: k (b (b x y) z) (b x (b y z))  
  associateInv :: k (b x (b y z)) (b (b x y) z)
--
class (Bifunctor b k k k) => HasIdentity k b i | k b -> i
class (Associative k b, HasIdentity k b i) => Monoidal k b i | k b -> i where
  idl :: k (b i a) a
  idr :: k (b a i) a
  idlInv :: k a (b i a)
  idrInv :: k a (b a i)
--

を使用してモノイド圏で射を構成する際の問題(.)は、オブジェクトが異なる方法で関連付けられる可能性があることです。ためにinstance Monoidal Hask (,) ()、我々は、タイプの射を構成することができますx -> ((a, b), c)タイプの射で((a, ()), (b, c)) -> yタイプを適合させるには、によって与えられる自然同型をbimap idrInv id . associate適用する必要があります。

Haskell型システムは、目的のドメインと終域タイプに基づいて、適切な同型を自動的に決定する方法を可能にしますか?どうすればいいのかわからない。

ベンジャミンバーガー

私はそれを理解しました、ある種。基本的な考え方は、正規化関数とその逆関数をメソッドとして持つマルチパラメーター型クラスを使用することです。ノーマライザーは、すべてを再帰的に右側に関連付けます。型クラスには、再帰の各ケースのインスタンスが必要です。次に、ある方法から別の方法に変換するには、最初の射のタイプのノーマライザーと2番目の射のタイプの逆ノーマライザーを作成します。

コードを公開したらすぐにここにリンクします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Haskellの双圏

分類Dev

HaskellのモノイドとNum

分類Dev

Haskellのモノイド製品

分類Dev

モノイド定義における射の表記法を理解していない

分類Dev

チゼルメモリ内の合成可能なノード例外にバインドされていません

分類Dev

SortedMapのscalazモノイド

分類Dev

haskell、IOモノイドの結合性は壊れていますか?

分類Dev

Reader用のモノイドの実装

分類Dev

Haskell-Readerモナドを使用したバイナリツリーの各ノードの深さ

分類Dev

Haskellの例の関数合成

分類Dev

Haskellのファンクターにモノイドの型クラスがないのはなぜですか?

分類Dev

一連の変換f :: a-> aは、関数合成上でモノイドを形成します-これをモノイドのインスタンスにするにはどうすればよいですか?

分類Dev

Haskellタイプの署名とモナド

分類Dev

std :: min / floatモノイドの単位元

分類Dev

std :: min / floatモノイドの単位元

分類Dev

モノイドの実用化とは?

分類Dev

Haskellの逆関数合成

分類Dev

実際のモノイドとしてのモナド

分類Dev

モナド射の適用性に関する質問

分類Dev

自由モノイドとモノイドの主な違いは何ですか?

分類Dev

圏論における「フィルター」とはどのような射ですか?

分類Dev

圏論における「フィルター」とはどのような射ですか?

分類Dev

Haskellで合成関数のタイプを見つける

分類Dev

HaskellとPurityのモナド

分類Dev

Haskell州のモナド

分類Dev

Haskellモナドの内部

分類Dev

関数の合成、クライスリの矢印、およびモナドの法則

分類Dev

A のモノイド インスタンス => Cats の A

分類Dev

モノドロイドダイアログの透明な背景

Related 関連記事

  1. 1

    Haskellの双圏

  2. 2

    HaskellのモノイドとNum

  3. 3

    Haskellのモノイド製品

  4. 4

    モノイド定義における射の表記法を理解していない

  5. 5

    チゼルメモリ内の合成可能なノード例外にバインドされていません

  6. 6

    SortedMapのscalazモノイド

  7. 7

    haskell、IOモノイドの結合性は壊れていますか?

  8. 8

    Reader用のモノイドの実装

  9. 9

    Haskell-Readerモナドを使用したバイナリツリーの各ノードの深さ

  10. 10

    Haskellの例の関数合成

  11. 11

    Haskellのファンクターにモノイドの型クラスがないのはなぜですか?

  12. 12

    一連の変換f :: a-> aは、関数合成上でモノイドを形成します-これをモノイドのインスタンスにするにはどうすればよいですか?

  13. 13

    Haskellタイプの署名とモナド

  14. 14

    std :: min / floatモノイドの単位元

  15. 15

    std :: min / floatモノイドの単位元

  16. 16

    モノイドの実用化とは?

  17. 17

    Haskellの逆関数合成

  18. 18

    実際のモノイドとしてのモナド

  19. 19

    モナド射の適用性に関する質問

  20. 20

    自由モノイドとモノイドの主な違いは何ですか?

  21. 21

    圏論における「フィルター」とはどのような射ですか?

  22. 22

    圏論における「フィルター」とはどのような射ですか?

  23. 23

    Haskellで合成関数のタイプを見つける

  24. 24

    HaskellとPurityのモナド

  25. 25

    Haskell州のモナド

  26. 26

    Haskellモナドの内部

  27. 27

    関数の合成、クライスリの矢印、およびモナドの法則

  28. 28

    A のモノイド インスタンス => Cats の A

  29. 29

    モノドロイドダイアログの透明な背景

ホットタグ

アーカイブ