[Haskell] Types of when and unless in Control.Monad
Andreas Abel
andreas.abel at ifi.lmu.de
Wed Jun 6 09:44:21 CEST 2012
On 06.06.12 12:13 AM, Henning Thielemann wrote:
>
> On Tue, 5 Jun 2012, Andres Löh wrote:
>
>>> Btw. the mapM memory leak can be easily and accidentally resurrected by
>>> writing
>>>
>>> when_ b (mapM f xs)
>>>
>>> with
>>>
>>> f :: a -> m ()
>>> when_ :: Bool -> m a -> m ()
>>
>> I don't understand the whole mapM analogy (yet). I don't need when_ to
>> get into trouble with using mapM.
>
> If I write
>
> when b (mapM f xs)
>
> with
>
> f :: a -> m ()
> when :: Bool -> m () -> m ()
>
> then GHC will say something like: Cannot match [()] (result of 'mapM')
> with () (argument of 'when').
Well, but nothing in the type system prevents you from writing
mapM f xs >> cont
or
do mapM f xs
cont
so you are not warned of a space leak in the common situations anyway,
but you are responsible yourself.
I don't know why 'when' should be any different than '>>'.
Cheers,
Andreas
--
Andreas Abel <>< Du bist der geliebte Mensch.
Theoretical Computer Science, University of Munich
Oettingenstr. 67, D-80538 Munich, GERMANY
andreas.abel at ifi.lmu.de
http://www2.tcs.ifi.lmu.de/~abel/
More information about the Libraries
mailing list