I began converting an unwieldy Makefile into a Haskell program via Shake, hoping that I could increase both its readability and modularity.  The modularity has increased greatly, and I have found it exhilarating how much more I can express about my dependencies.  However, readability has suffered.

I quickly found that heavy shell interaction became unwieldy and I came out with code that was much more difficult to scan with my eyes then what I had in my Makefile.

I attempted to fix this by using the Shelly library for my shell interactions, and was well pleased until I attempted to compile and discovered Shelly.FilePath is NOT Prelude.FilePath.  Now I am left sprinkling coercions all over the place and am again shaking my head at how difficult to scan my code has become.

I have been considering writing a shim over Shelly, but the prospect makes me uneasy.

Has anyone else walked down this path before, and if so what did you bring away from the experience?  I find this situation such a shame, as all my other experiences with both libraries have been quite wonderful.

- Eli