Я работаю над функцией для домашней задачи, которая подсчитывает количество значений в списке, для которых значения больше v1
и меньше v2
.Я собрал что-то, что работает, но только в конкретном случае.Когда я пытаюсь что-то еще, я получаю ошибку
*** Исключение: неисчерпывающие шаблоны в функции countInRange
Эта функция должна вызываться на 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