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

Reply via email to