
On Wed, Sep 17, 2008 at 10:11:28PM +0200, Manlio Perillo wrote:
David Roundy ha scritto:
[...] In particular, the code Don quoted is incorrect depending on which import statements are used. If we assume that the default is the bracket available in Haskell 98, then it is definitely incorrect.
It also doesn't behave properly in the presence of signals or keyboard interrupts (i.e. posix or windows systems).
Maybe a withSignalsMasked function, at least on Posix systems (it is not defined in System.Posix.Signals)?
Darcs does something like this, and I obviously think it should be moved into the standard libraries. In my opinion signals ought to throw asynchronous exceptions by default, then we'd have unified handling of exceptional cases.
I have no idea how signals works under Windows.
Windows doesn't have signals per se, but does have something similar for keyboard interrupts, which in darcs we also convert into an asynchronous exception. I'm not clear as to how well it works. Under cygwin shells, ctrl-C does something other than send a windows keyboard interrupt, so darcs doesn't work so well in that environment. David