首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在haskell,函数的两函子在哪里?

在haskell,函数的两函子在哪里?
EN

Stack Overflow用户
提问于 2018-07-18 08:09:52
回答 1查看 477关注 0票数 7

我找不到fmap的双功能类似物。

解释:

对象函子.数据类型构造函数类型- a -> f a

函数函子- fmap.类型- (a -> b) -> (fa -> fb)

对象的双函子- bimap f g的结果,其中f :: (a -> a')g :: (b -> b')。类型- p a b -> p a' b'

函数的双函子-?类型- p (a -> b) (c -> d) -> p (a' -> b') (c' -> d')

这就是为什么我认为双函子有这样的类型(我说的对吗?)用一些例子

更新

UPDATE2

在上面的图像中,p (a -> b) (c -> d) -> p (a' -> b') (c' -> d')是从双函子到双函子的态射,也是逆函子(因为所有的函数都是函子)。

摘要:

我认为p (a -> b) (c -> d) -> p (a' -> b') (c' -> d')是函数的双函子,但它不是。态射的双函子是bimap. Type: (a -> b) -> (α -> β) -> p a α -> p b β.

我认为p (a -> b) (c -> d) -> p (a' -> b') (c' -> d')是不寻常的东西,但它不是,它只是功能

EN

回答 1

Stack Overflow用户

发布于 2018-07-18 12:29:20

您不需要(->)Bifunctor实例,只需要(,)

代码语言:javascript
复制
b1 :: a -> Id a
b2 :: a -> Id2 a

-- instance Bifunctor (,) where
--   bimap f g (x, y) = (f x, g y)

f :: (Int, Float) -> (Id Int, Id2 Float)
f = bimap b1 b2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51396793

复制
相关文章

相似问题

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