Я новичок, интересующийся Haskell, и я пытался самостоятельно реализовать плоскую карту (>>=), чтобы лучше понять ее. В настоящее время у меня есть
flatmap :: (t -> a) -> [t] -> [a]
flatmap _ [] = []
flatmap f (x:xs) = f x : flatmap f xs
который реализует часть "карты", но не "плоскую".
Большинство модификаций, которые я делаю, приводят к обескураживающему и довольно неинформативному
Occurs check: cannot construct the infinite type: a = [a]
When generalising the type(s) for `flatmap'
ошибка.
Что мне не хватает?