WIP: Make the writer monad ((,) a) more lazy
(<*>) isn't lazy enough, making traversals take forever when they can be very fast.
I can't check the build, I have no access to submodules
I can't think of a test case because we have bottom when the test case should fail and I don't know of any stable GHC threshold-and-terminate measure of reduction effort to track when reducing an expression.
Comments in the source code aren't so valuable here. The commit message is very detailed.