On 2/21/07, Jules Bean <[EMAIL PROTECTED]> wrote:

Gene A wrote:

> Prelude> let revApply a f = f a
> Prelude> let rMap a fs = map (revApply a) fs
> Prelude> rMap 2 [(*4),(^2),(+12),(**0.5)]
> [8.0,4.0,14.0,1.4142135623730951]
>

Note that revApply here is precisely flip ($).

And ($a) is the same as flip ($) a.

So this reduces to one of the earlier examples rather quickly.

It is possible to argue 'it's nice to give revApply a name'. It's also
possible to argue 'taking a section of $ is even better than naming
revApply'.

-----------------
jules,
.. right on... ran this through ghci...

let rMap a fs = map ($ a) fs
{ that is clean ... gotta admit.. }
Prelude> rMap 2 [(*4),(^2),(+12),(**0.5)]
[8.0,4.0,14.0,1.4142135623730951]
Prelude> :t rMap
rMap :: forall a b. a -> [a -> b] -> [b]
====
About naming the secondary revApply function would agree and that would have
been in a "where" clause inside the definition of rMap had that been saved
to a file, but ghci doesn't really lend itself to multiline definitions so
that is why that was there, and it was also named in this case to show what
was going on... The functions as I originally defined them are probably
easier for someone new to Haskell to understand what was going on than the
rather stark ($ a) in the final factoring of the function... Though the
final resulting function is far the cleaner for that notation!

gene
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to