category-theory相关内容

平面列表和免费单元格

我试图说服自己,List Monad(具有平面列表、列表连接和映射元素的Monad)不是自由Monad(准确地说,是与某个函数器T关联的自由Monad)。据我所知,我应该能够在 年实现这一目标。 首先在单体列表中查找常用运算符FMAP、Join等之间的关系 然后证明了这种关系不存在于函子T上的任何自由单子中,对于所有T 列表单子中的特殊关系是什么,使其有别于自由单子?如果我不知 ..
发布时间:2022-06-29 13:45:20 其他开发

“代数"是什么意思在编程的上下文中是什么意思?

我在函数式编程和 PLT 圈子中多次听说过“代数"这个词,尤其是在讨论对象、共子、透镜等时.谷歌搜索这个术语给出了对这些结构进行数学描述的页面,这对我来说几乎是不可理解的.谁能解释一下余代数在编程上下文中的含义,它们的意义是什么,以及它们与对象和共子的关系? 解决方案 代数 我认为首先要了解代数的概念.这只是对群、环、幺半群等代数结构的概括.大多数时候,这些东西都是以集合的形式介绍的 ..

关于应用,而不是“组合",真正的应用有多少?

对于不确定性传播近似 类型,我想通过 Monad 获得 Functor 的实例.然而,这不起作用,因为我需要包含类型的向量空间结构,所以它实际上必须是类的受限版本.因为似乎仍然没有这些标准库(或者有吗?请指点我.有 rmonad,但它使用 * 而不是 Constraint 作为上下文类型,这对我来说似乎已经过时了),我写了 我自己的版本 暂时. 对于 Functor 来说一切都很简单 c ..
发布时间:2021-12-14 12:41:53 其他开发

Applicative/Monad 实例在多大程度上是唯一确定的?

如这个问题/答案所述,Functor 实例是唯一确定的(如果它们存在). 对于列表,有两个众所周知的 Applicative 实例:[] 和 ZipList.所以Applicative 不是唯一的(另请参阅GHC 能否为 monad 转换器派生 Functor 和 Applicative 实例?a> 和 为什么没有 -XDeriveApplicative 扩展?).但是,ZipList 需要 ..
发布时间:2021-12-14 12:31:39 其他开发

什么是范畴论 POV 中的 Applicative Functor 定义?

我能够通过以下方式将 Functor 的定义从范畴论映射到 Haskell 的定义:由于 Hask 的对象是类型,因此函子 F 将 Hask 的每个类型 a 映射到新类型 F a ,粗略地说,在它前面加上“F".映射每个态射 a ->Hask 的 b 到新的态射 F a ->F b 使用 fmap :: (a -> b) ->(f a -> f b). 到目前为止,一切都很好.现在我进 ..
发布时间:2021-12-14 12:28:39 其他开发

为什么 Functor 类没有返回函数?

从分类的角度来看,函子是一对两个映射(一个在对象之间,另一个在类别的箭头之间),遵循一些公理. 我已经假设,每个 Functor 实例都类似于数学定义,即可以映射对象和函数,但是 Haskell 的 Functor 类只有函数 fmap 映射函数. 为什么会这样? UPD 换句话说: 每个 Monad 类型 M 都有一个函数 return :: a ->M a. 和 ..
发布时间:2021-12-14 12:18:41 其他开发

单子作为附件

我一直在阅读关于范畴论中的单子.单子的一个定义使用一对伴随函子.monad 由使用这些函子的往返定义.显然附属在范畴论中非常重要,但我还没有看到任何关于伴随函子的 Haskell monad 的解释.有人考虑过吗? 解决方案 编辑:只是为了好玩,我会正确地做这件事.原始答案保留在下面 类别附加的当前附加代码现在在附加包中:http://hackage.haskell.org/pack ..
发布时间:2021-12-14 12:09:04 其他开发

是否有没有相应的 monad 转换器的 monad(IO 除外)?

到目前为止,我遇到的每个 monad(可以表示为数据类型)都有一个相应的 monad 转换器,或者可以有一个.有没有这样的 monad 不能有一个?或者是否所有的 monad 都有相应的转换器? 通过一个 transformer t 对应于 monad m 我的意思是 t Identity 与 同构米.当然,它满足 monad 转换器定律,并且 t n 是任何 monad n 的 monad ..
发布时间:2021-12-14 12:02:04 其他开发

什么是自由单子?

我看到Free Monad这个词弹出每个 现在 和 然后有一段时间,但每个人似乎只是使用/讨论它们而没有解释它们是什么.那么:什么是自由 monad?(我想说我熟悉 monad 和 Haskell 基础知识,但对范畴论只有非常粗略的了解.) 解决方案 Edward Kmett 的回答显然很棒.但是,这有点技术性.这是一个可能更容易理解的解释. 自由 monad 只是将函子转换为 mo ..
发布时间:2021-12-14 11:41:19 其他开发

monad 只是一个内函子范畴中的幺半群,有什么问题?

以下是谁先说的? monad 只是一个幺半群内函子的范畴,是什么问题? 另外一个不太重要的问题是,这是真的吗?如果是,您能否给出解释(希望没有太多 Haskell 经验的人能够理解)? 解决方案 这个特别的措辞出自 James Iry,来自他极具娱乐性的编程语言的简要、不完整和大部分错误的历史,他虚构地将其归功于菲利普·瓦德勒. 原文引用自桑德斯·麦克莱恩 (Saunde ..
发布时间:2021-12-14 11:34:54 其他开发

为什么在Haskell中仅将本地小的笛卡尔封闭类用于Curry类是公平的?

Control.Category.Constrained 是一个非常有趣的项目,它介绍了笛卡尔封闭类别的类- Curry 的方法.是因为几乎每个了解Haskell的人都知道这些功能吗?还是还有其他原因? 解决方案 我想知道为什么我们决定专注于 curry 和 uncurry 作为 Curry 的方法.是因为几乎所有了解Haskell的人也都知道这些功能吗? 作为图书馆的作者,我可 ..
发布时间:2021-05-13 20:38:36 其他开发

递归方案允许递归调用之间的依赖关系(有序的同构吗?)

我对以更高阶的方式(递归方案)编写递归代码感兴趣,其中递归调用之间可能存在依赖关系. 作为一个简化的示例,考虑一个遍历整数树的函数,检查和是否小于某个值.我们可以对整个树求和并将其与最大值进行比较.另外,一旦超过最大值,我们就可以保持连续和短路: 数据树=叶子Nat |节点树sumLT :: Nat->树->布尔sumLT max t = sumLT'max t>0sumLT':: Nat ..

从Bool到Bool有多少种不同的功能?

由于(至少在我看来)这与编程紧密相关,所以我在这里而不是在数学或 cs ,但是如果您认为它最适合那里或另一面,请给出您的意见. 在Bartosz Milewski的程序员分类理论的第二章结尾处,有一个问题: 从 Bool 到 Bool 有多少种不同的功能?你能全部实现吗? 这是我的理由: Bool 中只有两个元素: True 和 False ; different 是指被 ..

广义的"fold"或如何一次执行"fold"和"map"

(由标题表示歉意,我做得更好) 我的问题是找到一些通用的struct或“标准"函数来执行下一件事: xmap :: (a -> b) -> f a -> g b 然后,我们不仅可以映射元素,还可以映射整个结构. 一些(不是真实的)示例 xmap id myBinaryTree :: [a] 此刻,我必须先做一个明确的结构转换器(典型的fromList,toList) ..
发布时间:2020-11-22 07:24:17 其他开发

为什么静态箭头会泛化箭头?

众所周知,Applicative概括了Arrows.在惯用语是忽略的,箭头是细致的, Sam Lindley,Philip Wadler和Jeremy Yallop写的monads是混杂的论文,据说Applicative等效于Static Arrows,即具有以下同构性的箭头: arr a b :: arr () (a -> b) 据我了解,可以通过以下方式进行说明: 注意 ..
发布时间:2020-11-22 07:23:03 其他开发

荒谬函数的反函数

Data.Void中的absurd函数是否存在反函数? 如果存在,将如何实施?其用途是什么? 解决方案 该功能不存在.(假设严格的语义) 查看类型的代数,函数类型等效于幂运算. 现在,类型为Void -> a的函数absurd对应于等于1的运算a ^ 0.这意味着absurd仅有一个实现,可以在Data.Void中找到. 反转箭头,您将得到类型a -> Void,它 ..
发布时间:2020-11-22 07:22:43 其他开发

Haskell中的分类结构

通常认为 Hask是其对象是类型而态射是函数的类别. 但是,我已经看到Conor McBride(@pigworker)警告不要多次使用Hask( 1 , 2 , 3 ): 我不鼓励谈论"The Hask Category".因为它在潜意识里限制了您避免在Haskell编程中寻找其他分类结构. 请注意,我不喜欢使用"Hask"作为"Haskell类型和函数类别"的名称:我担心将一个类 ..
发布时间:2020-11-22 07:13:28 其他开发