
Keean Schupke
Surely if IO is (ST RealWorld a) then (StateT RealWorld m a) is more or less the right thing?
Not at all, since ST and StateT are completely unrelated. What signature would runSTT have? Either it exposed the contained state (the RealWorld!): runSTT :: Monad m => STT s m a -> m (a,s) or it drops the state: runSTT :: Monad m => STT s m a -> m a The former is a bad idea, the latter is useless as it can be implemented by running the ordinary runST inside m. Note that runStateT uses the former signature and would expose RealWorld, if it could be instantiated at RealWorld. Udo. __________________________________________________________ Mit WEB.DE FreePhone mit hoechster Qualitaet ab 0 Ct./Min. weltweit telefonieren! http://freephone.web.de/?mc=021201