category-theory相关内容
我试图说服自己,List Monad(具有平面列表、列表连接和映射元素的Monad)不是自由Monad(准确地说,是与某个函数器T关联的自由Monad)。据我所知,我应该能够在 年实现这一目标。 首先在单体列表中查找常用运算符FMAP、Join等之间的关系 然后证明了这种关系不存在于函子T上的任何自由单子中,对于所有T 列表单子中的特殊关系是什么,使其有别于自由单子?如果我不知
..
我在函数式编程和 PLT 圈子中多次听说过“代数"这个词,尤其是在讨论对象、共子、透镜等时.谷歌搜索这个术语给出了对这些结构进行数学描述的页面,这对我来说几乎是不可理解的.谁能解释一下余代数在编程上下文中的含义,它们的意义是什么,以及它们与对象和共子的关系? 解决方案 代数 我认为首先要了解代数的概念.这只是对群、环、幺半群等代数结构的概括.大多数时候,这些东西都是以集合的形式介绍的
..
对于不确定性传播近似 类型,我想通过 Monad 获得 Functor 的实例.然而,这不起作用,因为我需要包含类型的向量空间结构,所以它实际上必须是类的受限版本.因为似乎仍然没有这些标准库(或者有吗?请指点我.有 rmonad,但它使用 * 而不是 Constraint 作为上下文类型,这对我来说似乎已经过时了),我写了 我自己的版本 暂时. 对于 Functor 来说一切都很简单 c
..
如这个问题/答案所述,Functor 实例是唯一确定的(如果它们存在). 对于列表,有两个众所周知的 Applicative 实例:[] 和 ZipList.所以Applicative 不是唯一的(另请参阅GHC 能否为 monad 转换器派生 Functor 和 Applicative 实例?a> 和 为什么没有 -XDeriveApplicative 扩展?).但是,ZipList 需要
..
我能够通过以下方式将 Functor 的定义从范畴论映射到 Haskell 的定义:由于 Hask 的对象是类型,因此函子 F 将 Hask 的每个类型 a 映射到新类型 F a ,粗略地说,在它前面加上“F".映射每个态射 a ->Hask 的 b 到新的态射 F a ->F b 使用 fmap :: (a -> b) ->(f a -> f b). 到目前为止,一切都很好.现在我进
..
从分类的角度来看,函子是一对两个映射(一个在对象之间,另一个在类别的箭头之间),遵循一些公理. 我已经假设,每个 Functor 实例都类似于数学定义,即可以映射对象和函数,但是 Haskell 的 Functor 类只有函数 fmap 映射函数. 为什么会这样? UPD 换句话说: 每个 Monad 类型 M 都有一个函数 return :: a ->M a. 和
..
我一直在阅读关于范畴论中的单子.单子的一个定义使用一对伴随函子.monad 由使用这些函子的往返定义.显然附属在范畴论中非常重要,但我还没有看到任何关于伴随函子的 Haskell monad 的解释.有人考虑过吗? 解决方案 编辑:只是为了好玩,我会正确地做这件事.原始答案保留在下面 类别附加的当前附加代码现在在附加包中:http://hackage.haskell.org/pack
..
到目前为止,我遇到的每个 monad(可以表示为数据类型)都有一个相应的 monad 转换器,或者可以有一个.有没有这样的 monad 不能有一个?或者是否所有的 monad 都有相应的转换器? 通过一个 transformer t 对应于 monad m 我的意思是 t Identity 与 同构米.当然,它满足 monad 转换器定律,并且 t n 是任何 monad n 的 monad
..
我看到Free Monad这个词弹出每个 现在 和 然后有一段时间,但每个人似乎只是使用/讨论它们而没有解释它们是什么.那么:什么是自由 monad?(我想说我熟悉 monad 和 Haskell 基础知识,但对范畴论只有非常粗略的了解.) 解决方案 Edward Kmett 的回答显然很棒.但是,这有点技术性.这是一个可能更容易理解的解释. 自由 monad 只是将函子转换为 mo
..
在我读过的许多文章中,monad >>= 运算符是一种表示函数组合的方式.但对我来说更接近于某种高级功能的应用 ($) :: (a -> b) ->->乙(>>=) :: Monad m =>m a ->(a -> m b) ->米 对于组合,我们有 (.) :: (b -> c) ->(a -> b) ->->C(>=>) :: Monad m =>(a -> m b) ->(b -> m
..
以下是谁先说的? monad 只是一个幺半群内函子的范畴,是什么问题? 另外一个不太重要的问题是,这是真的吗?如果是,您能否给出解释(希望没有太多 Haskell 经验的人能够理解)? 解决方案 这个特别的措辞出自 James Iry,来自他极具娱乐性的编程语言的简要、不完整和大部分错误的历史,他虚构地将其归功于菲利普·瓦德勒. 原文引用自桑德斯·麦克莱恩 (Saunde
..
在这个问题, leftarounabout 左 a相当清楚的解释为什么我们实际上考虑 ArrowApply 和 Monad 等效. 该想法是在往返期间不丢失任何信息: arrAsFunction ::箭头k =>k x y->(x-> k()y)arrAsFunctionφx =φ
..
Control.Category.Constrained 是一个非常有趣的项目,它介绍了笛卡尔封闭类别的类- Curry 的方法.是因为几乎每个了解Haskell的人都知道这些功能吗?还是还有其他原因? 解决方案 我想知道为什么我们决定专注于 curry 和 uncurry 作为 Curry 的方法.是因为几乎所有了解Haskell的人也都知道这些功能吗? 作为图书馆的作者,我可
..
我对以更高阶的方式(递归方案)编写递归代码感兴趣,其中递归调用之间可能存在依赖关系. 作为一个简化的示例,考虑一个遍历整数树的函数,检查和是否小于某个值.我们可以对整个树求和并将其与最大值进行比较.另外,一旦超过最大值,我们就可以保持连续和短路: 数据树=叶子Nat |节点树sumLT :: Nat->树->布尔sumLT max t = sumLT'max t>0sumLT':: Nat
..
由于(至少在我看来)这与编程紧密相关,所以我在这里而不是在数学或 cs ,但是如果您认为它最适合那里或另一面,请给出您的意见. 在Bartosz Milewski的程序员分类理论的第二章结尾处,有一个问题: 从 Bool 到 Bool 有多少种不同的功能?你能全部实现吗? 这是我的理由: Bool 中只有两个元素: True 和 False ; different 是指被
..
(由标题表示歉意,我做得更好) 我的问题是找到一些通用的struct或“标准"函数来执行下一件事: xmap :: (a -> b) -> f a -> g b 然后,我们不仅可以映射元素,还可以映射整个结构. 一些(不是真实的)示例 xmap id myBinaryTree :: [a] 此刻,我必须先做一个明确的结构转换器(典型的fromList,toList)
..
众所周知,Applicative概括了Arrows.在惯用语是忽略的,箭头是细致的, Sam Lindley,Philip Wadler和Jeremy Yallop写的monads是混杂的论文,据说Applicative等效于Static Arrows,即具有以下同构性的箭头: arr a b :: arr () (a -> b) 据我了解,可以通过以下方式进行说明: 注意
..
Data.Void中的absurd函数是否存在反函数? 如果存在,将如何实施?其用途是什么? 解决方案 该功能不存在.(假设严格的语义) 查看类型的代数,函数类型等效于幂运算. 现在,类型为Void -> a的函数absurd对应于等于1的运算a ^ 0.这意味着absurd仅有一个实现,可以在Data.Void中找到. 反转箭头,您将得到类型a -> Void,它
..
通常认为 Hask是其对象是类型而态射是函数的类别. 但是,我已经看到Conor McBride(@pigworker)警告不要多次使用Hask( 1 , 2 , 3 ): 我不鼓励谈论"The Hask Category".因为它在潜意识里限制了您避免在Haskell编程中寻找其他分类结构. 请注意,我不喜欢使用"Hask"作为"Haskell类型和函数类别"的名称:我担心将一个类
..
在Haskell中,我们使用术语“节"来表示在中缀位置使用的部分应用功能.例如,对于函数foo :: a -> b -> c和值x :: a和y :: b,我们有两个部分 s1 = (x `foo`) :: b -> c == \b -> foo x b 和 s2 = (`foo` y) :: a -> c == \a -> foo a y 但是,在范畴论中,f的g部分被定义为
..