On 12/12/06, Conal Elliott <[EMAIL PROTECTED]> wrote:
This rewrite changes the order of execution. The old version did all of the putDirs and then all of the renameFile calls. The new one interleaves putDirs & renameFile calls. In general, ">>" is not commutative, though in this case you may be as happy with either order. - Conal
Right. That's really why I wanted to change it. It should do both actions for each element in one pass over the list.
On 12/12/06, Bryan Burgers <[EMAIL PROTECTED]> wrote:
> Before we get too far down the obfuscation road, I'd like to offer > what I think is more readable than a liftM2 solution: > > mapM_ (\p -> putDirs p >> uncurry renameFile p) pairs > > I haven't tested it, but I hope that does the same thing. To me, this > explicitely shows what each is doing, moreso than with a point-free > 'foo' combinator. > > The way my mind worked to get to this solution: > > mapM_ putDirs pairs > mapM_ (uncurry renameFile) pairs > > ==> > > mapM_ (\p -> putDirs p) pairs > mapM_ (\p -> uncurry renameFile p) pairs > > ==> > > mapM_ (\p -> putDirs p >> uncurry renameFile p) pairs > > Is that a reasonable solution?
That works too. I don't know if I consider the liftM2 solution obfuscated yet, but you're right, it could be leaning that way. Thanks for the alternative suggestion. -- Lou. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe