In GHC 6.0 there is a new data structure, Data.HashTable. Why is it based on the IO monad instead of ST? I really think it should be a general policy that imperative data structures be based on the ST monad so they can be used for implementing observably pure functions. There's always stToIO for when one really wants to do stuff in the IO monad. Lauri Alanko la@iki.fi