Proposal: Add concatMapM function (#2042)
Roman Leshchinskiy
rl at cse.unsw.edu.au
Sun Feb 3 20:18:43 EST 2008
Aaron Denney wrote:
> On 2008-02-01, Roman Leshchinskiy <rl at cse.unsw.edu.au> wrote:
>> Aaron Denney wrote:
>>> On 2008-02-01, Roman Leshchinskiy <rl at cse.unsw.edu.au> 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
>>> 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
More information about the Libraries
mailing list