New release of stateWriter, v0.2.9
The stateWriter
package exposes a monad that has a similar API to the familiar RWST
transformer, but where the Writer
instance is implemented like the state part. As a result, this implementation does not leak memory, and is noticeably faster.
Unfortunately, there was a huge bug in the implementation of listen
, which is now fixed. All users are strongly encouraged to upgrade now.
This bug was found while proving that the transformer was sound. You might like reading the coq proof that proves compliance with the Functor
, Applicative
, Monad
and State
laws. Unfortunately, I could not find good laws for the Writer
and Reader
parts. An ad-hoc test for the following law found the bug:
= fmap (\v -> (v,mempty)) (lift act) lift act
I will try to add a few more theorems in later versions!