【问题标题】:What is context in Haskell multiparameter type classHaskell多参数类型类中的上下文是什么
【发布时间】:2010-07-17 19:49:19
【问题描述】:

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

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

几段之后,它说 >>= 和 return 不需要定义,因为上下文。但是没有进一步解释上下文的含义。

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

【问题讨论】:

    标签: monads typeclass haskell


    【解决方案1】:

    “上下文”只是class=> 之间的部分,在这种情况下是约束Monad m。与其说它“知道”,不如说它强制它——为没有Monad 实例的m 类型编写一个MonadSupply 实例将产生编译错误。

    【讨论】:

    • 啊,是的。我错过了它说成为 monad 是先决条件的部分。感谢您的快速答复:)
    猜你喜欢
    • 2012-01-15
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 2021-12-31
    • 1970-01-01
    • 2012-09-02
    相关资源
    最近更新 更多