У меня есть задача в Haskell (нет, это не моя домашняя работа, я учусь на экзамене).
Задача:
Write point-free function
numocc
, которая подсчитывает вхождения элементов в заданные списки. Например:numocc 1 [[1, 2], [2, 3, 2, 1, 1], [3]]
=[1, 2, 0]
Это мой код:
addif :: Eq a => a -> Int -> a -> Int
addif x acc y = if x == y then acc+1 else acc
count :: Eq a => a -> [a] -> Int
count = flip foldl 0 . addif
numocc :: Eq a => a -> [[a]] -> [Int]
numocc = map . count
numocc
и count
являются "точечными", но они используют функцию addif
, которая не является.
Я не знаю, как я могу сделать функцию addif
без точек. Можно ли сделать оператор if
без указания точки? Может быть, есть трюк, который не использует if
?