示例 - 来自Haskell基础模块的函数runKleisli
newtype Kleisli m a b = Kleisli { runKleisli :: a -> m b }
这意味着runKleisli
有一个类型为a
的参数,并且必须返回函数m
,它有1个参数b
?
答案 0 :(得分:5)
这意味着m
是一种种类 * -> *
;也就是说,m
是类型构造函数,它接受单个参数,例如Maybe
或Either String
。当您实例化Kleisli
并自己执行替换时,您可以看到它是如何工作的。
例如,考虑Kleisli Maybe String Integer
之类的内容。 runKleisli
的替换类型为String -> Maybe Integer
,您可以看到m
如何用作类型构造函数。
有关Haskell中种类的更多信息,请参阅What exactly is the kind "*" in Haskell?。