Some explanations from #haskell (log see 21:04):
TuringTest: ST lets you implement algorithms that are much more efficient with mutable memory used internally. But the whole "thread" of computation cannot exchange mutable state with the outside world, it can only exchange immutable state.
sjanssen: a monad that has mutable references and arrays, but has a "run" function that is referentially transparent
emu: in-place qsort within ST monad: http://hpaste.org/274