タグ付けされた質問 「category-theory」

カテゴリ理論は、数学とその概念をオブジェクトと矢印(射)のコレクションとして形式化するために使用されます。カテゴリ理論は、セット理論、リング理論、グループ理論など、他の高レベルの抽象概念を公式化するために使用できます。(スティーブAwodeyによって)

6
カテゴリー理論は関数型プログラミングの学習に役立ちますか?
私はHaskellを学んでおり、その言語に魅了されています。しかし、私には深刻な数学やCSのバックグラウンドはありません。しかし、私は経験豊富なソフトウェアプログラマです。 Haskellでより良くなるために、カテゴリー理論を学びたいです。 Haskellを理解するための良い基礎を提供するために、カテゴリー理論のどのトピックを学ぶべきですか?

2
プログラミング言語と数学の基礎はどのように関係していますか?
基本的に私は数学の3つの基礎を知っています 集合論 型理論 カテゴリー理論 それでは、プログラミング言語と数学の基礎はどのように関係していますか? 編集 元の質問は「数学の基礎に基づいたプログラミング言語」でした 追加されたパラガルフ そして理論の実装 1. Coqの型理論 2. SETLの集合論 3. Haskellのカテゴリー理論 提案に基づいて、これは「プログラミング言語と数学の基礎はどのように関係しているのか」に変更されました。 これは私が尋ねていることについて十分に知らなかったが何かを学びたいと思った質問の1つであるため、質問を変更して、学習や他の人にとってより価値のあるものにしますが、Andrej Bauerによる現在の答えは話題から外れているようです。 これまでのすべてのコメントと回答に感謝し、私はそれらから学んでいます。

3
SMLのファンクターとカテゴリー理論の関係は何ですか?
この答えでのアンドレイ・バウアーのこの声明と同じ考え方に沿って Haskellコミュニティは、カテゴリ理論に触発されたいくつかの手法を開発しました。モナドは最もよく知られていますが、モナドと混同しないでください。 SMLのファンクターとカテゴリー理論のファンクターの関係は何ですか? HaskellやOCamlなどの他の言語のファンクターの詳細については知らないので、価値のある情報がある場合は、他の言語のセクションも追加してください。

2
カテゴリー理論が意味することは、高階関数をどのように扱うかをまだ知りませんか?
読んでウダイ・レディの 答えをするSMLでファンクタとカテゴリの理論との関係とは?Uday州 カテゴリー理論は、高階関数の扱い方をまだ知らない。いつか、そうなるでしょう。 カテゴリー理論は数学の基礎として役立つと思ったので、数学と高階関数のすべてを導き出すことができるはずです。 それでは、カテゴリ理論が意味することは、高階関数の扱い方をまだ知らないということですか?カテゴリー理論を数学の基礎として考えることは有効ですか?

2
プログラミングのカテゴリー理論(ではない)?
Haskellやそれほど純粋ではないFP言語を学んだ後、カテゴリ理論について読むことにしました。カテゴリー理論をよく理解した後、私はカテゴリー理論の概念を使用してプログラムの設計を考える方法について考え始めましたが、どんなに一生懸命試みても、これは進むべき道ではないようです。 カテゴリー理論をプログラムの設計に関連付けるための多くの失敗した試みを費やした後、私は次のような結論に達しました: カテゴリ理論は、プログラミング言語を設計するときに役立ちます。 カテゴリ理論は、プログラムを設計するときに使用するものではありません(カテゴリの原則に基づいて設計された言語を使用する場合でも)。例:Haskellでプログラミングする場合、カテゴリ理論の概念ではなく、型、型コンストラクタ、関数、高階関数などを使用してプログラムを設計します。 要約すると、下層システムがあります(順序は低から高です): カテゴリ理論->プログラミング言語->プログラム 特定のレイヤーでは、直下のレイヤーの概念を使用します。 この理解は正しいですか?そうでない場合は、プログラムの設計でカテゴリ理論の概念を直接使用できると考えている場合は、いくつかの記事またはブログの投稿を参照してください。 注:プログラムを設計するということは、並行性、並列処理、リアクティブ、メッセージパッシングなどのさまざまな概念に基づいてプログラムを設計することを意味します。

1
カテゴリー理論的枠組みを利用するモナドの自然発生
今日、ヘニング・カースタンの講演(「確率的遷移システムのためのトレース意味論」)が初めてカテゴリ理論に直面しました。彼は、確率論的な遷移システムとそれらの挙動を一般的な方法で、すなわち数え切れないほど無限の状態セットとトレースの異なる概念で記述するための理論的枠組みを構築しました。この目的のために、彼は抽象化のいくつかの層をたどり、最終的にモナドの概念に行き着き、それをメジャー理論と組み合わせて必要なモデルを構築します。 最後に、最初に5分で説明した概念を記述するためのフレームワークを(おおよそ)構築するのに45分かかりました。私はこのアプローチの美しさを評価しています(トレースの異なる概念をうまく一般化します)が、それでも奇妙なバランスとして印象づけられます。 私はモナドが本当に何を見るのに苦労され、どのように一般的なAのコンセプトは用途に有用であることができます(両方の理論と実践で)。結果的に努力するだけの価値はありますか? したがって、この質問: モナドの抽象的な概念を適用でき、望ましい結果を導き出すのに役立つ(CSの意味での)自然な問題がありますか(または手段なしでも)(まったくまたはなしでより良い方法で)?

2
参照要求:型システムに適用されるカテゴリ理論
プログラミング言語理論を真に理解するために、カテゴリー理論をどのように学ばなければならないかについて、私は聞き続けています。これまでのところ、カテゴリーの領域に足を踏み入れることなく、かなりのPLを学びました。しかし、私は自分が行方不明になっていたものを見るために飛躍する時だと思った。 残念ながら、私が見つけることのできるソースはどれも、型システムやプログラミングに接続しているようには見えません。彼らはそれがコンピューター科学者のためのカテゴリー理論への入門であると言うが、それから一般的な抽象的なナンセンス(私はこれを愛情を込めて言う)に変わります。 私の質問は実際には2つあると思います: カテゴリー理論はPLの「深い概念」を理解するために不可欠ですか? 型システムとプログラミングへの実用的なアプリケーションの観点からカテゴリー理論を説明するソースは何ですか? これまでのところ、私が得た最も遠いのは、ファンクターの漠然とした概念です(私が知る限り、これはMLのファンクターとは関係がないようです)。カテゴリ理論的な観点からモナドを理解するために頭の中に留めておかなければならない抽象化を恐れています。

1
カテゴリー理論(のサブセット)と関係代数の間に同型はありますか?
ビッグデータの観点から来ています。基本的に、多くのフレームワーク(Apache Sparkなど)は、Functor / Monadのようなインターフェイスを提供することにより、リレーショナル操作の欠如を「補償」し、cats-to-SQL変換(ScalaのSlick)への同様の動きがあります。たとえば、SQLパースペクティブからの要素ごとのベクトルの乗算には、自然な結合(インデックスの繰り返しがないと仮定)が必要です。これは、カテゴリ理論のアプリケーションでzip + map(multiply) (SparkのMLibが既に持っているElementwiseProduct)と見なすことができます。 簡単に言うと(以下の例はScalaにあります): 参加の参照サブケースは、その順番で私たちを与えるのApplicativeファンクタ(オーバー分別収集)、と考えることができますzip:List(1,2,3).ap(List(2,4,8).map(a => (b: Int) => a * b))- > (List(1,2,3) zip List(2,4,8)).map(x => x._1 * x._2)。さらに、いくつかの前処理(groupBy演算子または単なる射影、または一般に-エピモーフィズム)を想定して、他の結合に誘導することができます。 他の結合と選択はモナドと考えることができます。たとえば、WHERE次のとおりです。- List(1,2,2,4).flatMap(x => if (x < 3) List(x) else List.empty)>List(1,2,2,4).filter(_ < 3) データ自体は単なるADT(GADTでもあります)であり、単純なSet-category(またはより一般的に言えば-デカルト閉)のように見えるため、Setベースの操作(カリーによるHoward-Lambek自体)およびRENAME(少なくとも実際には)同様の操作。 集約はfold/reduce(カタモフィズム)に対応 だから、私が求めているのは、カテゴリ理論(のおそらくサブセット)と(全体の)関係代数の間の同型を構築できるか、または何かが明らかにされているということですか?それが機能する場合、カテゴリの正確な「サブセット」は正代数と同型ですか? logic-cats-lambdaのCurry-Howard-Lambek対応のような正式なソリューションはより正確ですが、実際には、完成した研究への参照を求めています(直接的な関係を示しています) )Scala / Haskellでさらに例を示します。 編集:受け入れられた答えは、私がモナドとして結合と条件を表現しすぎていると考えさせました(特に事実上FALSEをインスタンス化する空の値を使用して)、少なくともSQLのrelalgebraサブセットについてはプルバックで十分だと思います。モナドは、GROUP BYのような高次(ネスト)のものに適しています。これは、代数の一部ではありません。

4
カテゴリとセットの意味上の違いは何ですか?
この質問では、setとtypeの違いは何かを尋ねました。これらの回答は本当に明確になっているため(たとえば、@ AndrejBauer)、知識への渇望の中で、カテゴリについて同じことを尋ねる誘惑に服します。 カテゴリ理論(確かにかなり非公式です)について読むたびに、それが集合論と具体的にどう違うのか本当に理解できません。 したがって、可能な限り最も具体的な方法では、と言うのと比較して、カテゴリにあると言うことはについて正確に何を意味し ますか?(例えば、がグループであると言うことと、がカテゴリーと言うことの違いは何ですか?)xxxX ∈ S X X G R PCCCx∈Sx∈Sx\in SxxxxxxGrpGrp\mathrm {Grp} (比較を最も明確にする任意のカテゴリとセットを選択できます)。

2
Haskellリストタイプはどのフィックスポイントですか?
リストが次のように定義されているとしましょう List a = Nil | Cons a (List a) 次に、HaskellでList x最大または最小の固定点は何ですか?lfpは無限リストを除外する必要がありますが(ただし、Haskellで作成できます)、gfpは有限リストを除外する必要があるためです。

2
カテゴリー理論の形式はタイプ理論のそれを置き換えることができますか?
タイプ理論とカテゴリー理論の間の対応の微妙さは私のケンの外にあります。ただし、2つの歴史的に収束した分野間の関係についての私のナイーブな理解により、後者は前者を完全に包含しています。もしそうなら、カテゴリー理論家が使用する言語と形式的/グラフィック記述はタイプ理論家のものを置き換えることができますか?そして、それらは(例えば、教育学および学術出版において)すべきか? 異なる形式は、斬新な視点を刺激し、他の方法ではあいまいである可能性のある裸の概念的なつながりを築くことができます。しかし、方言の多様性はおそらく受容的な聴衆のサイズも制限します、そして、多声アプローチが取られるならば、博覧会の長さと複雑さは複雑になります。 カテゴリ理論がタイプ理論を包含する場合、2つの分野の弁証法の違いを維持する必要がありますか?歴史的または文化的価値のために?教育的または理論的な重点の異なるが顕著な違いを保持するには?これらは何でしょうか?

2
Coqでの基本的なカテゴリー理論の形式化
私はCoqの完全な初心者であり、いくつかのカテゴリー理論のものを演習として実装しようとしています。 私は多くの利用可能なそのような実装(HoTT、AwodeyのCoqコンパニオンなど)のgitリポジトリの中で少しサーフィンしましたが、すべてのプロジェクトがそのようなものを実装しているようです Record Category : Type := mkCategory{ ob : Type ; mor : ob -> ob -> Type ; compose : forall x y z : ob, mor x y -> mor y z -> mor x z ; identity : forall x, mor x x ; (* ... …

2
モノイドは最適化に役立ちますか?
多くの一般的な操作はモノイドです。Haskellはこの観察を利用して、多くの高階関数をより一般的なものにしています(Foldable1つの例です)。 モノイドを使用してパフォーマンスを改善できる1つの明白な方法があります。プログラマーは操作の結合性をアサートしているため、操作を並列化できます。 モノイドを扱っていることを知って、コンパイラーがコードを最適化できる他の方法があるかどうか知りたいです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.