[Haskell-cafe] Name that function =)

Conal Elliott conal at conal.net
Tue Dec 12 12:29:57 EST 2006


Hi Louis,

Try foo = liftM2, and check out the recent haskell thread "Cannot understand
liftM2".

Cheers, - Conal

On 12/12/06, Louis J Scoras <louis.j.scoras at gmail.com> wrote:
>
> Hi all;
>
> I'm new to the list, so I just wanted to say hi and -- of course --
> ask a quick question:
>
> I have some IO actions that I want to map over a list of pairs --
> these are just directory names and their down-cased versions.  It
> wasn't difficult to actually get the right behavior by just doing mapM
> twice.
>
>     -- putDirs just outputs something like "mv fst snd"
>     mapM_ putDirs pairs
>     mapM_ (uncurry renameFile) pairs
>
> This bothered me though, because I suspected that this could be done
> in one pass.  Naively I proceeded to this.
>
>     mapM_ (putDirs >> (uncurry renameFile)) pairs
>
> Which didn't work.  I thought about it a little more before realizing
> that putDirs wouldn't get any parameters this way: I needed some way
> to distribute the pair over both operations.  Here's the higher-order
> function I needed:
>
>     foo h f g i = h (f i) (g i)
>
> which could then be curried and we get:
>
>     mapM_ (foo (>>) putDirs $ uncurry renameFile) pairs
>
> Works great.  So my question: is there a established name for foo?
> What about foo partially applied to (>>)?  This was a fun exercise,
> but I'd like to use the standard implementations if they exist.
>
> Thanks!
>
>
> --
> Lou.
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20061212/9e5f7b70/attachment.htm


More information about the Haskell-Cafe mailing list