*类别理论*是抽象数学的一个分支,涉及揭示和描述逻辑和数学系统的基础结构。事实证明,类别理论中的概念作为构建编程语言和程序本身语义的工具非常有效。各种类别的理论结构被用作编程抽象的工具,包括仿函数,monad和代数。
Bartosz Milewski,在第 5 章的“终端对象”部分中强调了以下内容 请注意,在此示例中,唯一性条件至关重要,因为还有其他集合(实际上,所有
是否有任何“推荐”库可以在 Agda 中提供易于使用的基本范畴论形式化? Agda 标准库似乎在这方面提供的很少。 我在找...
如何在Lean4中定义free monads和cofree comonads?
在 Haskell 中我们可以这样定义这两个: 数据 Free (f :: Type -> Type) (a :: Type) = Pure a |自由(f(自由f a)) 数据 Cofree (f :: Type -> Type) (a :: Type) = Cofree a (f (Cofree ...
我正在研究《程序员范畴论》,其挑战之一是实现 Functor 接口。 这个问题提供了以下解决方案: 酒吧特质函子 { 类型
在现实世界的应用中,我注意到一种模式可以概括为: 纯脚本: 类泛函子 p <= Zero p where pzero :: forall a b. p a b -- such that `forall f g. d...
我试图从范畴论的角度理解 Monoid 是什么,但我对用来描述它的符号有点困惑。这是维基百科: 在范畴论中,幺半群(或幺半群
在阅读 Bartosz 的优秀程序员类别理论时,我陷入了第二个练习,该练习涉及偏序集中的乘积。给定一个偏序集, 是 ↗ ⤭ ↘ a → c f → h ↘ ...
在Haskell中,Bifunctor类定义如下: 类双函子 p 其中 bimap :: (a -> b) -> (c -> d) -> p a c -> p b d 在范畴论中,根据 ncat,双函子是...
我有一个 AST,正在使用 Cofree 进行注释: 数据表达式 = 常量整数 |添加一个 A |穆拉 A 推导(Show、Eq、Functor) 我使用 type Expr = Fix ExprF 来表示未标记...
Edward Kmett 在他的博客上写道,使用 Co newtype(来自 kan-extensions 包),可以从任何 Comonad 派生出 Monad。我想学习如何机械地为任何...
类型构造器`Maybe (BTree a)`是monad吗?
问题 像这样在 Haskell 中定义类型构造函数 F : 数据 BTree a = 叶子 a |分支 (BTree a) (BTree a) 数据 F a = F(也许(BTree a)) 类型构造子 F 是多项式的,所以它是一个 Fu...
如何证明荒谬模式的两个应用在 Cubical Agda 中产生相同的结果?
重范畴论(agda-categories)相关问题。 我试图定义一个自然变换并证明它的自然性广场通勤。本质上,我遇到的错误是两个“
我想把双叉函数lmap泛化一下。lmap通常是把一个函数映射到双叉函数的左边漏斗中。首先,我将Functor的概念泛化为超越...的类别。
`liftM`这个名字的灵感来自数学中的升降机吗?[不公开]
我是一名数学博士生,辅修CS,目前正在上Haskell的课。我们刚刚学习了 liftM。这些概念看起来很相似,但我还没能搞清楚 liftM 究竟是如何 ...
我试图在Haskell中翻译这段描述List anamorphism的代码,但不能完全让它工作。最后三行应该是生成一个函数计数,给定一个 ...
我打算使用奇妙的库https:/tpolecat.github.iodoobie,而且功能齐全。我是通过第一个例子,我已经认识到。Transactor是一种数据类型... ...
我一直在通过Haskell中的一些类别理论来创建更通用的Monads。在我进入下一步之前,我需要能够使用自然......。
我有一个非常典型的类别定义,是这样的: class Category (cat :: k -> k -> Type) where id :: cat a a (.) :: cat a b -> cat c a -> cat c b Now I would like to make the ...
为什么相互屈服使得ArrowApply和Monads等同,不同于Arrow和Applicative?
这是我要参考的SO帖子。另外,为了不把材料分开,我在那个问题上要用和上位者一样的片段。众所周知,一个ArrowApply实例......。
我试图理解https://hackage.haskell.org/package/base-4.14.0.0/docs/Data-Void.html,并具有以下示例:let x :: Eoider Void Int; x =左无效代码未获得...