我正在研究一个家庭作业问题的函数,该函数计算列表中值大于v1
和小于的值的数量v2
。我把一些东西放在一起,但只在特定情况下有效。当我尝试其他东西时,我得到了错误
*** 例外:函数 countInRange 中的非详尽模式
这个函数应该调用 on getInRange
。getInRange
只返回列表中大于v1
和小于的值v2
。这是它的样子。
rangeHelper v1 v2 x | x > v1 && x < v2 = True
| otherwise = False
getInRange :: Ord a => a -> a -> [a] -> [a]
getInRange v1 v2 iL = filter(rangeHelper v1 v2) iL
count iL = sum (map (const 1) iL)
countInRange :: Ord a => a -> a -> [[a]] -> Int
countInRange v1 v2 [iL] = count ((getInRange v1 v2) iL)
如果我打电话
countInRange 3 10 [[4,5,6]] -- works, prints 3
countInRange 3 10 [[1,2], [4,5,6]] -- error: non exhaustive patterns