这是一个列表减法示例。
(\\) :: Eq a => [a] -> [a] -> [a]
[] \\ _ = []
xs \\ [] = xs
(x:xs) \\ (y:ys)
| x == y = xs \\ ys
| otherwise = (x : (xs \\ [y])) \\ ys
首先,我不知道情商代表什么。
第二,在类型类约束中,a
应该是[a]
吗?因为输入必须是列表。
答案 0 :(得分:5)
Eq
是包含==
的类型类。因此约束Eq a
表示a
必须是可以使用==
进行比较的类型。
它是Eq a
而不是Eq [a]
,因为我们希望能够比较列表中的元素,而不是列表本身(尽管如果这样做,我们仍然可以这样做,因为Eq a
表示Eq [a]
)。