什么是“|”在MonadReader的签名中意味着什么?

时间:2016-10-16 06:12:15

标签: haskell typeclass

当我正在阅读“All About Monads”时,我碰到了这样的类类型定义:

class Monad m => MonadReader r (m :: * -> *) | m -> r where
  ...

class Monad m => MonadState s (m :: * -> *) | m -> s where      
  ...

我对竖条记法感到困惑!这是一个“OR”,是一个约束吗?那么m->s怎么样呢?

我知道什么是类型类,我知道什么是类型构造函数和类型变量,我也得到了什么是种类,我只是无法理解这一点!

另外,当我使用ghci时,在输入:k MonadState :k MonadReader后,他们都给了我* -> (* -> *) -> GHC.Prim.Constraint,这真是太奇怪了!

有人可以对此有所了解吗?

0 个答案:

没有答案