Я начинаю интересоваться 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'
ошибка.
Что мне не хватает?