Avoid word "transformer" in the documentation of ST
I'm unhappy about the current wording in the documentation of the ST module in base. Let me explain why.
Some time ago, as a novice, I struggled to get the difference between three monad-related concepts:
- The State monad.
- The StateT monad transformer.
- The ST monad.
Current documentation for ST says that "ST" stands for state transformer (see everywhere except for the introduction paragraph). While this follows original 1994 paper "Lazy Functional State Threads", I find this confusing after the adoption of term "(monad) transformer" due to 1995 paper "Functional Programming with Overloading and Higher-Order Polymorphism". Note that ST paper predates MT one.
At the same time, the 1994 paper itself (in the title) and some current tutorials, like the one at HaskelWiki, use the word "thread" to describe what's going on, avoiding discussion of spelling of ST.
As the bottom line, I think, it would be helpful, especially for a novice, to avoid the word "transformer" in the documentation of ST module.