
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.