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