13

圏論について読み始めたばかりですが、CSの反変性/共分散と圏論の関係を誰かが説明していただければ幸いです。いくつかの例のカテゴリーは何でしょうか(つまり、それらのオブジェクト/射は何ですか?)?前もって感謝します?

4

2 に答える 2

9

$C$から$D$までの反変ファンクターは、$C$から$D^ {op} $までの通常の(つまり共変)ファンクターとまったく同じです。ここで、$ D ^{op} $は$D$。したがって、最初に反対のカテゴリを理解するのがおそらく最善です。そうすれば、逆変のファンクターを自動的に理解できます。

逆変のファンクターは、CSではそれほど頻繁には現れませんが、2つの例外が考えられます。

  1. サブタイピングのコンテキストで共変性について聞いたことがあるかもしれません。これは技術的には同じ用語ですが、接続は本当に、本当に弱いです。オブジェクト指向プログラミングでは、クラスは半順序を形成します。すべての半順序は「バイナリhom-sets」を持つカテゴリです。任意の2つのオブジェクト$A$と$B$が与えられた場合、$ A \ leq B $の場合、$ A\からB$への射は1つだけです(方向に注意してください。この少し紛らわしい向きは、ここでは説明しない理由から標準です)、それ以外の場合は射はありません。

    たとえば、ScalaのPartialFunction [-A、Unit]のようなパラメーター化されたタイプは、この単純なカテゴリーからそれ自体へのファンクターです...通常、オブジェクトに対して行うことに焦点を当てます。クラスXが与えられると、PartialFunction [X、Unit]もクラスになります。 。しかし、ファンクターは射も保持します。この場合、Dog of Animalのサブクラスがあるとすると、Dog $ \ to $ Animalの射があり、関数はこの射を保持して、PartialFunction [Animal、Unit] $ \ to $ PartialFunction [Dog、 Unit]、PartialFunction [Animal、Unit]はPartialFunction [Dog、Unit]のサブクラスであることを示しています。あなたがそれについて考えるならば、それは理にかなっています:あなたが犬で働く機能を必要とする状況があると仮定してください。すべての動物で機能する機能は確かにそこで機能します!

    とは言うものの、完全な圏論を使用して半順序集合について話すことは、非常にやり過ぎです。

  2. あまり一般的ではありませんが、実際には圏論を使用しています。オブジェクトがHaskellプログラミング言語の型であり、射$ \ tau_1 \ to \tau_2$が型$\tau_1 $->の関数である圏Types(Hask)を考えてみてください。 $ \tau_2$。また、オブジェクトがタイピング判断のリスト$ \ tau_1 \ vdash \ tau_2 $であり、射が一方のリストのすべての判断の証明であり、もう一方のリストの判断を仮説として使用するカテゴリJudgements(Hask)もあります。タイプ(ハスク)からジャッジメント(ハスク)までのファンクターがあり、タイプ(ハスク)-射$ f:A \ toB$を証明します

     B |-Int
    ----------
      .....。
    ----------
     A |-Int

これは射です$(B \ vdash Int)\ to(A \ vdash Int)$-方向の変化に注意してください。基本的に、これが言っているのは、AをB'aに変換する関数と、タイプBの自由変数xを持つタイプIntの式がある場合、それを「let x =fyin」でラップできるということです。 .. "そして、まだInt型の式に到達しますが、その自由変数は$B$ではなく$A$型のみです。

于 2011-05-02T00:13:08.863 に答える