Using DeepSeq for exception ordering

Antoine Latter aslatter at gmail.com
Fri Nov 9 05:54:47 CET 2012


Is this related to imprecise exceptions?

http://research.microsoft.com/en-us/um/people/simonpj/papers/imprecise-exn.htm

Antoine


On Thu, Nov 8, 2012 at 12:01 PM, Nicolas Frisby <nicolas.frisby at gmail.com>wrote:

> And the important observation is: all of them throw A if interpreted in
> ghci or compiled without -O, right?
>
>
> On Thu, Nov 8, 2012 at 11:24 AM, Albert Y. C. Lai <trebla at vex.net> wrote:
>
>> On 12-11-08 07:12 AM, Simon Hengel wrote:
>>
>>> I was just going to say that I can give at least one counterexample
>>> where this does not hold:
>>>
>>>    evaluate (('a' : undefined) `deepseq` return () :: IO ())
>>>    throwIO exceptionB
>>>
>>> But then I realized that here exceptionA is optimized away altogether.
>>> For me this smells like a bug.  Is this related to [1]?
>>>
>>> [1] http://hackage.haskell.org/**trac/ghc/ticket/2273<http://hackage.haskell.org/trac/ghc/ticket/2273>
>>>
>>
>> Interesting. A few more tests (all GHC 7.4.2, linux, x86 32-bit, use "ghc
>> -O" to compile):
>>
>> The following cases throw A:
>>
>> import Control.DeepSeq
>> import Control.Exception
>>
>> main = do
>>   evaluate (('a' : error "A") `deepseq` return () :: Maybe ())
>>   throwIO (userError "B")
>>
>> main = do
>>   evaluate (('a' : error "A") `deepseq` ())
>>   throwIO (userError "B")
>>
>> main = do
>>   evaluate (('a' : error "A") `deepseq` True)
>>   throwIO (userError "B")
>>
>> main = do
>>   x <- evaluate (('a' : error "A") `deepseq` putStrLn "hi")
>>   x
>>   throwIO (userError "B")
>>
>> The following cases throw B:
>>
>> main = do
>>   evaluate (('a' : error "A") `deepseq` return () :: IO ())
>>   throwIO (userError "B")
>>
>> main = do
>>   evaluate (('a' : error "A") `deepseq` putStrLn "hi")
>>   throwIO (userError "B")
>>
>> main = do
>>   evaluate (('a' : error "A") `deepseq` getLine)
>>   throwIO (userError "B")
>>
>>
>> ______________________________**_________________
>> Glasgow-haskell-users mailing list
>> Glasgow-haskell-users at haskell.**org <Glasgow-haskell-users at haskell.org>
>> http://www.haskell.org/**mailman/listinfo/glasgow-**haskell-users<http://www.haskell.org/mailman/listinfo/glasgow-haskell-users>
>>
>
>
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users at haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/glasgow-haskell-users/attachments/20121108/76b89fbd/attachment-0001.htm>


More information about the Glasgow-haskell-users mailing list