【发布时间】:2021-05-13 14:30:21
【问题描述】:
我正在尝试创建一个 haskell 函数,该函数接受元素列表,如果有空格则返回 true,如果没有则返回 false。
这就是我所拥有的,在运行测试时它返回全部为真。当前 2 种情况应该为假时。
gaps :: (Enum t, Eq t) => [t] -> Bool
gaps [] = False
gaps [x] = False
gaps (x:y:xs) = if y == (succ x) then gaps (y:xs) else True
gapsTests = [
not $ gaps [1..10]
,not $ gaps "ABCD"
,gaps "ABD"
,gaps [1,2,3,5,6]
,gaps "ABBC"
]
【问题讨论】:
-
注意前面的
not,如果没有空格,not $ gaps [1..10]将返回True。 -
所以它应该都返回True?我没有意识到不是
-
使用 not 意味着您可以使用
and gapsTests而不是gapsTests == [False, False, True, True, True]之类的方式验证所有测试。
标签: haskell