我找不到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')是不寻常的东西,但它不是,它只是功能
发布于 2018-07-18 12:29:20
您不需要(->)的Bifunctor实例,只需要(,)
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 b2https://stackoverflow.com/questions/51396793
复制相似问题