An alternative implemenation of STM Haskell in Haskell