
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