Мне нужна функция, которая проверяет условие в списке.Проверка состояния в Haskell
Например:
countP :: [a] -> (a -> Bool) -> Int
с входом:
countP [1,-2,0,-1,5] (>0)
должен возвращать 2, потому что есть два числа больше нуля.
Вот что я сделал до сих пор:
countP :: [a] -> (a -> Bool) -> Int
countP [] _ = []
countP (x:xs) condition = if condition x then 1:countP xs condition else countP xs condition
Это возвращение [1,1] вместо числа два. Он должен быть рекурсивным.
Как я могу это сделать?
Вы настаиваете на том, чтобы делать это вручную? Поскольку вы можете использовать [фильтр] (http://hackage.haskell.org/package/base-4.7.0.2/docs/Prelude.html#v:filter) и [длина] (http://hackage.haskell.org /package/base-4.7.0.2/docs/Prelude.html#v:length). – zegkljan