
Hi
Maybe it would be enough to represent the example "where" problem more fairly on its own terms. The non-working example has us writing
f = State $ \ x -> y where y = ... x ...
I just don't think this example is representative of the typical decisions in the trade-off. There are reasons to use let, and reasons to use where, but refactoring the entire code into a state monad isn't one I would have ever come up with! A more balanced variant of the page could mention this as one particular case where a let might be preferred, but the fundamental question of let vs where should deal with things like expression vs statement, scoping, textual ordering, strictness, pattern matching, desugaring etc - but probably mainly focus on "style". My personal view is to nearly always use a where, except in a monad, where a do-let is correct choice. I very occasionally use a let-in, but only for reasons of textual ordering. Thanks Neil