haskell - "class TypeClassName a b where"语法不正确?

标签 haskell

我正在学习 Haskell,我不太确定 class TypeClassName a b where 是否不正确。

用 Haskell 写这样的东西有意义吗?

我知道 class TypeClassName a where 是正确的,但我不确定额外的 b 在那里是否有意义?

最佳答案

您可以通过启用多参数类型类扩展来做到这一点。

{-# LANGUAGE MultiParamTypeClasses #-}

关于它的用法和要求,实际上取决于您的应用程序。例如,在 linked tutorial对于类型族,他们实际上必须使用此扩展。另外,这个wikibook section解释了如何将其用于 Collection 类型类。对于 Collection 类型类,多参数类型类是很好的用例:

{-# LANGUAGE MultiParamTypeClasses #-}
 class Eq e => Collection c e where
     insert :: c -> e -> c
     member :: c -> e -> Bool

这里c是像List这样的集合类型,e是集合中的元素。因此,任何支持 insert 和 memebership 测试功能的集合都可以成为该类型类的实例。

关于haskell - "class TypeClassName a b where"语法不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22857477/

相关文章:

haskell - 运行 Literate Haskell 代码时没有 (GHC.Base.Alternative Parser) 错误实例

haskell - 在 Reader monad 中使用 blaze-html 有没有一种不那么尴尬的方法?

haskell - 匹配类型和单子(monad)。错误

haskell - 在我的 Haskell 代码中找不到错误

haskell - 关于 Functor 实例声明

haskell - 一类改变类型的替换

haskell - 数组生成中的奇怪 <<loop>> 异常

Haskell - 打印数字

c++ - 如何在 Windows 上安装 FTGL 库?

haskell - 为什么我不能在不同的数据类型之间重用相同的值构造函数?