[Haskell-beginners] A little explanation!
michael at orlitzky.com
Wed Apr 30 17:19:02 UTC 2014
On 04/30/2014 11:29 AM, Gilberto Melfe wrote:
> Hello everybody !
> Could someone explain me exactly how this function works?
> elementAt_w'pf = (last .) . take . (+ 1)
> It's a posted solution to: 99 Haskell problems, problem 3.
> I'm having trouble with the "(last .) ." thing!
It's not your fault, that solution is retarded. Once you remove all of
the intentional obfuscation, it looks like,
elementAt_w'pf n xs = last (take (n + 1) xs)
which is easy to understand. You can un-retard it step-by-step:
elementAt_w'pf = (last .) . take . (+ 1)
<=> elementAt_w'pf n = ((last .) . take . (+ 1)) n
= (last .) ((take . (+ 1)) n)
= (last .) (take (n + 1))
= last . (take (n + 1))
<=> elementAt_w'pf n xs = (last . (take (n + 1))) xs
= last (take (n + 1) xs)
All I've used above is the precedence of the function composition
operator, and the fact that (f . g) x = f (g x).
More information about the Beginners