这个问题与antal sz 回答的这个Function Composition VS Function Application有关。
你怎么能得到这个?
map has type (a -> b) -> [a] -> [b]
head has type [a] -> a
map head has type [[a]] -> [a]
为什么下面的代码有函数组合的类型错误?
test :: [Char] -> Bool
test xs = not . null xs
getMiddleInitials :: [String] -> [Char]
getMiddleInitials middleNames = map head . filter (\mn -> not . null mn) middleNames
但这没有类型错误
getFirstElements :: [[a]] -> [a]
getFirstElements = map head . filter (not . null)
为了利用函数组合,是否必须编写一个无点函数?我还是不太明白函数组合的用法。
请帮忙。谢谢。