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