7
在真实世界哈斯克尔第15章,一个类型的类定义:什么是上下文Haskell的多参数类型的类
class (Monad m) => MonadSupply s m | m -> s where
一对夫妇的段落后,它说,>> =,并返回不需要由于上下文而被定义。但没有进一步解释上下文意味着什么。
编译器如何知道MonadSupply是Monad的实例,如果只有“m”是单子的实例?
在真实世界哈斯克尔第15章,一个类型的类定义:什么是上下文Haskell的多参数类型的类
class (Monad m) => MonadSupply s m | m -> s where
一对夫妇的段落后,它说,>> =,并返回不需要由于上下文而被定义。但没有进一步解释上下文意味着什么。
编译器如何知道MonadSupply是Monad的实例,如果只有“m”是单子的实例?
“上下文”只是class
和=>
之间的一部分,在这种情况下,它是约束条件Monad m
。而且这与其说是它“知道”,更在于它强制它 - 写MonadSupply
实例的类型m
不也有Monad
实例将产生一个编译器错误。
嗯,是的。我错过了那个说monad是一个先决条件的部分。感谢您的快速回答:) – user394827 2010-07-18 01:30:34