首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haskell:态射在么半群范畴中的合成

Haskell:态射在么半群范畴中的合成
EN

Stack Overflow用户
提问于 2016-07-09 23:32:01
回答 0查看 185关注 0票数 4

我有以下关于monoidal类别类的定义(类似于标准库,但提供了必要的自然同构的逆):

代码语言:javascript
复制
class (Category r, Category s, Category t) => Bifunctor p r s t | p r -> s t, p s -> r t, p t -> r s where
  bimap :: r a b -> s c d -> t (p a c) (p b d)
--
class (Bifunctor b k k k) => Associative k b where
  associate :: k (b (b x y) z) (b x (b y z))  
  associateInv :: k (b x (b y z)) (b (b x y) z)
--
class (Bifunctor b k k k) => HasIdentity k b i | k b -> i
class (Associative k b, HasIdentity k b i) => Monoidal k b i | k b -> i where
  idl :: k (b i a) a
  idr :: k (b a i) a
  idlInv :: k a (b i a)
  idrInv :: k a (b a i)
--

使用(.)组成么半类中的态射的问题是,对象可能会以不同的方式关联。对于instance Monoidal Hask (,) (),我们可能希望将x -> ((a, b), c)类型的态射与((a, ()), (b, c)) -> y类型的态射组合在一起。要使类型匹配,必须应用bimap idrInv id . associate给出的自然同构。

Haskell类型系统是否支持基于所需的域和协域类型确定适当同构的自动方法?我想不出该怎么做。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38283401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档