我是一个对Haskell感兴趣的初学者,一直在尝试自己实现flatmap(>>=)以更好地理解它。目前我的实现是
flatmap :: (t -> a) -> [t] -> [a]
flatmap _ [] = []
flatmap f (x:xs) = f x : flatmap f xs
这个实现了“map”部分但没有实现“flat”部分。
我所做的大多数修改都导致令人沮丧且信息相对较少。
Occurs check: cannot construct the infinite type: a = [a]
When generalising the type(s) for `flatmap'
错误。
我错过了什么?