Моя задача - повторно реализовать эту функцию
divn :: Integer -> [Integer] -> [Integer]
divn _ [] = []
divn n (x:xs) | mod x n == 0 = x : divn n xs
| otherwise = divn n xs
с помощью «папки». Что я сделал:
divn' _ [] = []
divn' n (x:xs) = foldr (\x -> if (mod x n == 0) (x:) ([]++)) [] xs
Я думал, что это сработает. На самом деле он даже не компилируется, а пишет: "Ошибка синтаксического анализа на входе").
Так как я не нашел ошибок, я решил переписать, как если бы, и теперь это работает...
if' True x _ = x
if' False _ x = x
divn' _ [] = []
divn' n (x:xs) = foldr (\x -> if' (mod x n == 0) (x:) ([]++)) [] xs
Кто-нибудь знает, где ошибка?
Спасибо!