Je suis un débutant intéressé par Haskell, et j'ai essayé d'implémenter le flatmap (>> =) par moi-même pour mieux le comprendre. Actuellement, j'aiHaskell FlatMap
flatmap :: (t -> a) -> [t] -> [a]
flatmap _ [] = []
flatmap f (x:xs) = f x : flatmap f xs
qui implémente la partie "carte" mais pas le "plat".
La plupart des modifications je fais dans le résultat désolant et assez sans information
Occurs check: cannot construct the infinite type: a = [a]
When generalising the type(s) for `flatmap'
erreur
.
Qu'est-ce qui me manque? Une erreur de ce type se produit lorsque la signature de type que vous spécifiez ne correspond pas au type réel de la fonction.
BTW, il ya un Wikipedia décrivant ce qui se passe un contrôle est: http://en.wikipedia.org/wiki/Occurs_check – jrockway