我是一个对 Haskell 感兴趣的初学者,我一直在尝试自己实现 flatmap (>>=) 以更好地理解它。目前我有
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'
错误。
我错过了什么?