On Feb 16, 2006, at 7:32 PM, John Meacham wrote:

...
  Again that doesn't compile, because "when" requires a ()-returning
monad as its second parameter, but the "string" parser returns "String". Same thing with if-then-else, when used to switch IO actions and such: the IO actions must fully match in type, even if the returned value will
be discarded, and again that can be trivially resolved by adding the
"return ()".

This is a straight up bug in the definition of when I hope we fix. it
should have type

when :: Bool -> IO a -> IO ()
when = ...

Arguably this could be made true of *every* function which presently takes m () as an argument. That is, we could systematically go through the libraries and convert every function of type:

f :: (Monad m) => .... -> m () -> ...

into

f :: (Monad m) => .... -> m otherwiseUnusedTypeVariable -> ...

This would basically eliminate the need for "ignore". I can see taste arguments in either direction, but really the language ought to pick an alternative and use it everywhere (including for >>).

-Jan-Willem Maessen


        John


--
John Meacham - ⑆repetae.net⑆john⑈
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to