use*_*650 8 haskell functor category-theory
自从我在Edward Kmett的旧类别附加包中看到自然变换的定义以来,我就一直有这个问题.
-- | A natural transformation between functors f and g.
type f :~> g = forall a. f a -> g a
Run Code Online (Sandbox Code Playgroud)
但现在阅读斯蒂芬·迪尔的博客文章adjunctions,我觉得这样的:
在我们的上下文中的自然变换将是与两个Haskell仿函数实例f和g相关联的多态函数,其具有类型签名(Functor f,Functor g)=> forall a.fa - > g a.可以使用以下类型同义词编写.
Run Code Online (Sandbox Code Playgroud)type Nat f g = forall a. f a -> g a
面对我的"我将继续无视这种"的态度,这是一记耳光.所以对于这个问题:为什么可以突然放弃仿函数约束?
Haskell 中不允许对类型同义词施加约束。即使对于数据类型,它在 Haskell 2010 中也已被弃用。相反,应该将约束放在对这种类型的值进行操作的函数上。