我正在学习 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/