【发布时间】:2019-12-05 12:48:17
【问题描述】:
如何找出列表类型所属的类?
在https://www.haskell.org/onlinereport/haskell2010/haskellch6.html 说
数据 [a] = [] | a : [a] 推导 (Eq, Ord)
和
列表是类 Read、Show、Eq、Ord、Monad、Functor 和 MonadPlus 的实例。
为什么以上两者不完全一致?
列表类型是Foldable 类的实例吗?
如果是,为什么上面的链接中没有提到?
谢谢。
【问题讨论】:
-
他们做
deriving意味着Haskell可以自动实现Eq和Ord类(这意味着你不需要自己实现这些)。其他的则使用显式的instance Monad等实现。 -
(1) 你的意思是默认 list 不是 Monad 的实例吗?如果我想要它,我必须明确声明吗? (2) 列表类型是可折叠类的实例吗?如果是,为什么上面的链接中没有提到?
-
不,它只是意味着 Haskell 可以自动为类型类实现某些实例:这些是
Eq、Ord、Enum、Bounded、Show和 @ 987654332@. -
谢谢。 (1) (2) 我不明白你的意思。 (3) 如何找出一个类型(例如列表类型)所属的所有类?
-
使用
:i,您可以找到实例列表。
标签: list haskell instance typeclass deriving