I was reading the docs for Data.Hashtable, and quickly noticed that operations on a hashtable are of the IO monad. Why is this? I should think that the operations would look like this: insert :: Hashtable -> key -> val -> Hashtable lookup :: Hashtable -> key -> a etc. Thanks, Rob Hoelz