什么意思在Haskell中输入`a - > mb`?

srg*_*hma 0 haskell

示例 - runKleisli来自Haskell基本模块的函数

newtype Kleisli m a b = Kleisli { runKleisli :: a -> m b }
Run Code Online (Sandbox Code Playgroud)

这意味着runKleisli有1个参数类型a,必须返回函数m,它有1个参数b?

Ale*_*ing 5

这意味着m是一种类型的种类 * -> * ; 也就是说,m是一个接受单个参数的类型构造函数,如Maybe或Either String.当您自己实例化Kleisli并执行替换时,您可以看到它是如何工作的.

例如,考虑类似的事情Kleisli Maybe String Integer.替换类型runKleisli将是String -> Maybe Integer,您可以看到如何将m其用作类型构造函数.

有关Haskell中种类的更多信息,请参阅Haskell 中的"*"究竟是什么类型?.