
Aaron Denney wrote:
On 2008-02-01, Roman Leshchinskiy
wrote: Aaron Denney wrote:
Bulat Ziganshin wrote:
the right way to deal with "modifiers" is to attach them to the Handle itself like this:
f <- openFile "name" >>= withLocking >>= withEncoding utf8 IMO, global state is never "the right way" if it can be avoided. It will always lead to problems. Especially in a functional language like Haskell. This isn't global state, but local to the handle, and only affects where
On 2008-02-01, Roman Leshchinskiy
wrote: the handle is passed in. It's just extending an opaque data type. If I can destructively change the encoding assocated with a Handle, then it's global state. Right. But the example given doesn't necessarily have that.
x <- [5, 6] >>= (return .) (+ 1)
No modification is going on, but return of new values.
True, but that is a very obfuscated way of doing this. If the handle is not modified destructively, then there is no need for withLocking etc. to be monadic. Roman