News for hackers. Stuff that matters.
Re:Swift and the Legacy of Functional Programming by Scriptor on Monday November 21, 2016 @01:51PM (#13007992)
That's because your code assumes those convenience functions exist while the parent's code writes out the anonymous functions.

The direct translation of yours' to Clojure would be:

    (filter valid-person? (map init-person names))
Meanwhile, the direct Haskell translation of the parent comment is:

    filter (\p -> isValid p) (map (\n -> Person n) names)
Re:Swift and the Legacy of Functional Programming by aninhumer on Monday November 21, 2016 @02:05PM (#13008139)
No one would ever write the latter, because (\p -> isValid p) is equivalent to isValid.

However you're right that the function names would probably be a little longer in practice, and I've edited my example to reflect that. (But they're not convenience functions, they just have longer names due to Haskell's more limited namespacing)

Re:Swift and the Legacy of Functional Programming by junke on Monday November 21, 2016 @02:35PM (#13008419)
Not a Haskell expert, but maybe monomorphism restriction can require you to perform an eta abstraction. Just saying.
Re:Swift and the Legacy of Functional Programming by wyager on Monday November 21, 2016 @02:00PM (#13008083)
Huh? No, anyone who writes it in Haskell would not use those lambda abstractions. You would just use "filter isValid (map Person names)".
Re:Swift and the Legacy of Functional Programming by Scriptor on Monday November 21, 2016 @02:05PM (#13008135)
I'm assuming Person is a record constructor, is isValid here a field in that record or another function?
Re:Swift and the Legacy of Functional Programming by prodigal_erik on Monday November 21, 2016 @02:11PM (#13008202)
Haskell doesn't distinguish the two. If you define Person with named fields including isValid, you automatically get a function named isValid that returns that field, or you can write your own isValid function that examines the whole Person.