title: MonadFix instance for Put
body: <p>A simple question, I hope: The <code>binary</code> package defines two types, <a href="http://hackage.haskell.org/packages/archive/binary/0.5.1.0/doc/html/Data-Binary.html#g:2" rel="noreferrer"><code>Get</code> and <code>Put</code></a>. The former is essentially a state monad, and the latter is essentially a writer. Both state and writer have reasonable <code>MonadFix</code> instances, so I'd expect that <code>Get</code> and <code>Put</code> also would.</p>
  
  <p><code>Get</code> does. <code>Put</code> doesn't. So, is it possible to define an appropriate <code>MonadFix</code> instance for <code>Put</code> (really for <a href="http://hackage.haskell.org/packages/archive/binary/0.5.1.0/doc/html/Data-Binary-Put.html#t:PutM" rel="noreferrer"><code>PutM</code></a>)?</p>
  
  <p>A more general question is: how does one normally verify that a typeclass instance actually satisfies the laws of that typeclass?</p>