What are the prerequisites for a point-free function in Haskell
问题 I always thought that the prerequisites for a pointfree function were to get the function arguments to the end of the definition. E.g. -- This can be made pointfree quite easily: let lengths x = map length x let lengths' = map length -- However this cannot: let lengthz x = length `map` x -- let lengthz' = length `map` (parse error) I originally came across this reading this question. There we have this example: agreeLen :: (Eq a) => [a] -> [a] -> Int agreeLen x y = length $ takeWhile id $