How to implement my own instance for ST (similar to STRef or STArray)?
How to implement actions in ST-monad with my own underlying representation (similarly to STRef or STArray) using simple techniques?