Thanks, but I still don't get it. So SpockState m equals BlockChainState? So getState's type is m BlockChainState?
(BlockChainState chain _ _) <- getState
But it has to be anyway so, I guess I'm still confused. Is the squiggle for extra documentation or is it a hint to help the type inference? Why would type inference need help? Does it have to do with some of the extensions that are applied in the source (but appear to be otherwise unused)?