【发布时间】:2019-09-30 09:43:23
【问题描述】:
我是 Haskell 的初学者,在使用 Ord 时我错过了一个概念。我正在尝试通过下面的函数从 Haskell 列表中唯一的对
pairs:: (Ord a) => [a] -> [(a,a)]
pairs[] = []
pairs(x:xs) = [(i, j) | i <- xs, j <- xs, i > j]
例如,如果我想获得 [4,3,1,2] 的唯一对,我应该获得输出 [(4,3),(4,1),(4,2),(3,1),(3,2),(2,1)]
但我得到的是 [(3,1),(3,2)]。
我的问题是,为什么这会跳过列表 xs 的第一个元素?
谢谢。
【问题讨论】:
-
这是有道理的:您在第二个子句中在哪里使用
x。 -
启用警告将报告
x定义为从未使用过。