質問

通常、私は文脈の前に質問を置きますが、この場合、私は認めたいと思います 文脈と私の理解が質問を無効にする可能性。プラスそれは私が私の質問を通して考えるのを助けます。

私は最近読み始めました プログラマーのための圏論(バルトシュ ミレスキー), 、これは私の カテゴリの理解:それらは次のもので構成される「代数構造」です。 オブジェクトとそれらのオブジェクト間の矢印/射。射は従わなければならない 結合性の法則なので、

$ $A ightarrow(B ightarrow c)=(A ightarrow b) ightarrow c$ $

そして、各オブジェクトには恒等射がなければなりません。

今、Milewskiはモノイド(私はかなり快適です)を説明しています 集合論的な意味では)カテゴリとしても表示できます。これはパートIです とのトラブルを抱えています。この本の演習の1つは、次のことを考慮することです。 Boolean-and monoid(and演算子を持つブール値)をカテゴリとして:

AND演算子をカテゴリとして使用してBoolモノイドを表します:のリストを作成します。 射とその構成の規則。

私はいくつかの例を挙げたいと思いますが、これはSMLで行います(ただし、Haskellの名前を借ります)。

モノイドは、次のシグネチャで集合論的に記述することができます:

signature MONOID = sig
  type m
  val mempty : m
  val mappend : m -> m -> m
end

さらに、and演算子を持つブール値のモノイドは次のように与えられます

structure BoolAnd : MONOID = struct
  type m = bool
  val mempty = true
  fun mappend x y = x andalso y
end

だから、ここにカテゴリとその射としてのこのモノイドの私の理解があります:は それは正しいですか?

  • カテゴリ内のオブジェクトはブール値(trueとfalse)と関数です ブール値からブール値へ
  • BoolAnd.mappend は前者から後者への射である
  • mappend true は、関数オブジェクトの恒等射であり、 カテゴリ(実際の恒等関数ではないので、私は"an"と言います fun id x = x 多型型のおかげで、関数の恒等射もありますか?または それはカテゴリ-土地には数えられませんか?私はそれを知っています mappend true は同等です 型を持つ関数の構成の下で恒等関数に bool -> bool.)
  • booleanオブジェクトの恒等射は、単に次のように見えます fun id (b:bool) = b
  • 与えられた恒等射は連想的でなければならない:
(* example, not proof *)
- open BoolAnd;
- (id o (mappend true)) o not;
val it = fn : bool -> bool
- it false;
val it = true
- id o ((mappend true) o not);
val it = fn : bool -> bool
- it false;
val it = true

構成のルールは次のように思われます。 mappend true はアイデンティティですが、 mappend false はある種の"シンク"であり、結果の関数は常に falseを返します。しかし、 idmappend 直接構成しないでください。 整列しないでください( id 上記の箇条書きのように、ブール値に特化しています)。

私は何かが欠けていますか?どうしたの?私はあまりにも多くの詳細を与えましたか(そこに オブジェクトを掘りすぎないようにすることに重点が置かれているようです)?

私は私が良い基盤を持っているように私の理解を確認するために、これの両方をお願いします 本の残りの部分とまた、それは私に識別するのに長い時間がかかったので 仕事でのオブジェクトと射;そのうちのいくつかは、私はまだ約不安定です。

役に立ちましたか?

解決

モノイドは ワンオブジェクト カテゴリー.元は射であり、モノイド乗法は合成であり、モノイド単位元は恒等射である。

ブール値-with-の場合、モノイドは次のようになります M M=(\{\トップ、\ボット\}、\土地、\トップ)$.したがって、カテゴリには単一のオブジェクトがあります(これを呼び出すことができます $M$)二つの射を持つ $\トップ :M\からM$$\bot :M\からM$.構成は次のように与えられます $\土$ そして、恒等射は次のようになります $\ッ$.


もう少しコンテキストを与えるために、オブジェクトがモノイドの要素であるようにモノイドを表示する方法があります:離散的な(非同一性射を持たない)モノイド圏として。 プログラマのための圏論 モノイドカテゴリのトピックについては、第22章「モナド分類」で説明します。

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top