繁体   English   中英

Haskell 类型类实例中的 Kind Constraint 是什么意思?

[英]What Does Kind Constraint mean in Haskell typeclass instance?

当Haskell中的类约束类型变量时,我明白这意味着什么。

例如,在 function 声明中,

myFunction :: Foldable f => f a -> b

意味着 f 是一个具有 Foldable 实例的类型,它包装了一些其他类型 a。

但是,当类型变量受种类约束时,这意味着什么?

例如考虑可折叠的这个定义:

class Foldable (t :: * -> *) where

此外,1 个示例来自 function 定义而另一个示例来自 class 定义这一事实对约束的含义有何影响?

t:: * -> *不是约束,它是一种注解。 在这种情况下,它用于说明Foldable可以采用 arguments 类型构造函数,例如MaybeIdentity[] ,甚至部分应用的构造函数,例如Either Bool(,) String 相比之下, Foldable IntFoldable [Bool]属于类错误。

t:: * -> *可以理解为“ t将类型映射到类型”。

关键是,当我们有Foldable f时,我们会像在fa中一样使用f ,将f应用于一个参数。 如果我们允许f = Maybe我们得到Maybe a这是有道理的。 如果我们允许f = Int ,我们将得到无意义Int a

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM