Haskell多参数类型类中的上下文是什么

时间:2010-07-17 19:49:20

标签: monads typeclass haskell

在Real World Haskell的第15章中,定义了一个类型类:

class (Monad m) => MonadSupply s m | m -> s where

后几段,它表示由于上下文而不需要定义>> =和return。但是没有进一步解释上下文意味着什么。

如果只有'm'是Monad的实例,编译器如何知道MonadSupply是Monad的实例?

1 个答案:

答案 0 :(得分:6)

“上下文”只是class=>之间的部分,在这种情况下是约束Monad m。而且它并非“知道”,更多的是它强制执行 - 为类型MonadSupply编写m的实例,而Monad也没有{ {1}}实例将产生编译器错误。