Questions tagged «category-theory»

范畴论用于将数学及其概念形式化为对象和箭头(也称为态射)的集合。类别理论可用于形式化其他高级抽象概念,例如集合论,环论和群论。(史蒂夫·阿沃迪)


2
编程语言和数学基础如何关联?
基本上我知道数学的三个基础 集合论 类型理论 范畴论 那么编程语言和数学基础在哪些方面相关? 编辑 最初的问题是“基于数学基础的语言编程” 与添加的paragarph 理论的实现 1. Coq中的类型论 2. SETL中的 集合论3. Haskell中的范畴论 根据建议,该内容已更改为“编程语言和数学基础如何相关” 由于这是我不知道所要问的问题但想学习一些东西的问题之一,因此,我正在修改问题以使其对学习和其他人更有价值,但又保留了细节以免安德烈·鲍尔(Andrej Bauer)当前的答案似乎不合时宜。 感谢到目前为止的所有评论和答复,我正在向他们学习。

3
SML中的函子和范畴论之间有什么关系?
与Andrej Bauer在此答案中的陈述相同的想法 Haskell社区开发了许多受类别理论启发的技术,其中最著名的是monad,但不应将其与monad混淆。 之间是什么关系仿函数的SML和函子范畴论? 由于我不了解其他语言(例如Haskell或OCaml)中函子的详细信息,因此,如果有有价值的信息,请同时添加其他语言的部分。

2
类别理论的含义还不知道如何处理高阶函数?
在阅读乌代雷迪的 答案到什么是SML仿函数和类理论之间的关系?乌代州 范畴论尚不知道如何处理高阶函数。有一天,它将。 由于我认为范畴论可以作为数学基础,因此应该有可能推导所有数学和高阶函数。 那么,范畴论的含义是什么,尚不知道如何处理高阶函数?将类别理论视为数学基础是否有效?

2
类别理论(不是)用于编程?
在学习了Haskell和其他不是那么纯正的FP语言之后,我决定阅读有关类别理论的文章。在对分类理论有了很好的理解之后,我开始思考如何将分类理论的概念用于设计程序,但是无论我多么努力,这似乎都不是路要走。 在花了许多不成功的尝试将类别理论与设计程序联系起来之后,我得出以下结论: 类别理论在设计编程语言时很有用。 在设计程序时(甚至在使用基于类别原理设计的语言时)也不需要使用类别理论。例如:在Haskell中进行编程时,您将使用类型,类型构造函数,函数,高阶函数等来设计程序,而不是类别理论概念。 总而言之,我们有下层系统(顺序从低到高): 范畴论->编程语言->程序 在特定的层上,使用直接基础层的概念。 这种理解正确吗?如果不是这样,并且您认为在设计程序时我们可以直接使用类别理论的概念,请参阅一些论证该文章的文章或博客文章。 注意:通过设计程序,我的意思是基于不同的概念来设计程序,例如并发,并行,响应式,消息传递等。

1
利用范畴理论框架的单子自然发生
今天,亨宁·科斯坦(Henning Kerstan)的演讲(“概率转移系统的轨迹语义”)使我第一次遇到了范畴论。他建立了一个理论框架,以一般方式描述概率过渡系统及其行为,即具有无穷无穷的状态集和不同的迹线概念。为此,他经历了几层抽象,最后得出了monad的概念,并将其与测度理论相结合来构建所需的模型。 最后,他花了45分钟时间(大致)构建了一个框架来描述他最初在5分钟内解释的概念。我欣赏这种方法的优点(它确实很好地概括了痕迹的不同概念),但仍然使我感到奇怪。 我很难理解一个monad到底是什么,以及一个概念在应用程序中(在理论上和实践上)多么有用。就结果而言,真的值得付出努力吗? 因此这个问题: 是否存在可以应用单子抽象概念的自然问题(就CS而言),并且可以帮助(甚至起到工具作用)获得期望的结果(完全或以比没有时更好的方式)?

2
参考要求:分类理论,因为它适用于类型系统
我不断听到关于如何必须学习类别理论才能真正理解编程语言理论的信息。到目前为止,我在不涉足类别领域的情况下学到了很多PL。但是,我认为是时候该大踏步地看看我所缺少的了。 不幸的是,我找不到的任何资料似乎都与类型系统或编程没有任何联系。他们说这是计算机科学家对类别理论的入门,但是随后转向一般的抽象废话(我很爱说),而没有给出任何实际的例子或应用。 我想我的问题实际上有两个方面: 范畴论对于理解PL中的“深层概念”是否必不可少? 从实际应用到类型系统和编程的角度来看,有什么资料可以解释类别理论? 到目前为止,我得到的最深入的是模糊的函子概念(据我所知,它似乎与ML中的函子无关)。我对要从类别理论的角度理解monad所需的抽象感到恐惧。

1
范畴论(子集)和关系代数之间是否存在同构?
它来自大数据角度。基本上,许多框架(如Apache Spark)通过提供类似Functor / Monad的接口来“补偿”缺乏关系操作,并且向cats到SQL的转换也有类似的趋势(Scala中的Slick)。例如,我们需要自然联接(假设索引上没有重复),以便从SQL角度对向量进行元素zip + map(multiply) 逐次乘法,这ElementwiseProduct在类别理论的应用程序中可以被视为(但Spark的MLib已经拥有)。 简单地说(以下示例在Scala中): 引用的join子案例可以看作是应用函子(在有序集合上),这反过来又给我们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算符或仅仅是外推,或者通常是一种同形),我们可以将其引入其他联接。 其他联接和选择可以认为是monad。例如,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类别(或更笼统地说-笛卡尔封闭),因此(我想)它应该涵盖基于Set的操作(由于Curry- Howard-Lambek本身)以及类似的操作RENAME(至少在实践中如此)。 聚集对应于fold/reduce(变形) 所以,我要问的是,我们可以在类别理论(也许是子类别理论)和(整个)关系代数之间建立同构吗?还是有发现的东西?如果可行,类别的什么同构子集与relalgebra同构? 您会看到我自己的假设是相当广泛的,而诸如逻辑-猫-lambda的Curry-Howard-Lambek对应之类的形式化解则更为精确-因此,实际上,我要求参考已完成的研究(该研究表明了直接的关系),以及Scala / Haskell中的更多示例。 编辑:接受的答案使我认为我将连接和条件表示为monad太过分了(尤其是使用有效实例化FALSE的空值),我认为回调至少应足以满足SQL的relegebra子集。Monad更适合诸如GROUP BY的高阶(嵌套)内容,这不是relalgebra的一部分。

4
类别和集合之间的语义区别到底是什么?
在这个问题中,我问set和type有什么区别。这些答案确实很明确(例如,@ AndrejBauer),因此出于对知识的渴求,我倾向于对类别进行同样的询问: 每当我读到范畴理论(这诚然是相当非正式的),我无法真正了解它集理论的不同之处,具体。 所以在最具体的方式可能,究竟是什么暗示 关于xXx的说,它是在类,比说,?(例如,说是一个组与说在类别中有什么区别?)。X ∈ 小号X X G ^ - [R pCCCx∈SX∈小号x\in SxXxxXxGrpG[Rp\mathrm {Grp} (您可以选择任何类别并进行设置,以使比较最清晰)。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.