srg*_*hma 7 haskell category-theory
我找不到fif的bifunctor模拟.
说明:
对象的Functor - 数据类型构造函数.类型 -
a -> f a
函数的函数 - fmap.类型 - (a -> b) -> (fa -> fb)
对象的Bifunctor - 结果bimap f g,在哪里f :: (a -> a'),g :: (b -> b').类型 - p a b -> p a' b'
功能的Bifunctor - ?. 类型 - p (a -> b) (c -> d) -> p (a' -> b') (c' -> d')
这就是为什么我认为bifunctor有这样的类型(我是对的吗?)有一些例子
UPDATE
UPDATE2
p (a -> b) (c -> d) -> p (a' -> b') (c' -> d') 在上图中是从bifunctor到bifunctor和profunctor的态射(因为所有函数都是profunctors)
摘要:
我认为p (a -> b) (c -> d) -> p (a' -> b') (c' -> d')是函数的bifunctor,但事实并非如此.态射的Bifunctor是bimap. Type: (a -> b) -> (? -> ?) -> p a ? -> p b ?.
我认为这p (a -> b) (c -> d) -> p (a' -> b') (c' -> d')是不寻常的,但不是,它只是功能
lef*_*out 11
对象的Functor - 数据类型构造函数.类型 -
a -> f a函数的函数 -
fmap.类型 -(a -> b) -> (fa -> fb)
虽然这很有意义,但重要的是要认识到上述箭头有三种不同的含义.
对象的Functor - 数据类型构造函数.类型 -
a ? f a函数的函数 -
fmap.类型 -(a ? b) ? (f a ? f b)
哪里
?是类型级别的"映射到符号",它将类型a与类型相关联f a.这与域和codomain的值级函数没有任何关系.(这些是在应用/ monad中找到的,但这是一个不同的故事.)af a?是一些态射的类型构造函数.在Hask类别中,那些态射恰好是Haskell函数,但这只是一个特例.? 是一个实际的函数类型构造函数.你可能现在忘了后两者之间的区别,但?和?真的完全不同的概念†.基本上,?就像你在lambda中写的箭头一样
Maybe :: Type -> Type
Maybe = \a ? Maybe a
Run Code Online (Sandbox Code Playgroud)
而?只是表达你在功能事物上抽象的一种方式.
另一个可能不太清楚的相关事情是你所谈论的对象是Haskell类型.不是值(作为OO对象).
所以,我会说出你上面给出的列表:
函子
Type -> Type,映射关联a ? f a.fmap.类型:(a -> b) -> (f a -> f b).Bifunctor
Type×Type -> Type,或咖喱Type -> Type -> Type,映射关联a ? b ? p a b.bimap.类型:(a -> b) -> (? -> ?) -> p a ? -> p b ?.† 实际上,Haskell没有?或者你写的是什么a -> f a.这将是一个类型级别的lambda,但是类型级别的函数实际上只能表示为类型族,即你可以表达的最接近的a ? f a是type instance Functored a = f a.
| 归档时间: |
|
| 查看次数: |
311 次 |
| 最近记录: |