On 05/09/15 00:41, Roman Cheplyaka wrote:
> On 05/09/15 00:23, Edward Z. Yang wrote:
>> I would certainly agree that in terms of the data that is representable,
>> there is not much difference; but there is a lot of difference for the
>> client between Force and a strict field. If I write:
>>
>>     let x = undefined
>>         y = Strict x
>>     in True
>>
>> No error occurs with:
>>
>>     data Strict = Strict !a
>>
>> But an error occurs with:
>>
>>     data Strict = Strict (Force a)
> 
> At what point does the error occur here? When evaluating True?
> 
> What about the following two expressions?
> 
>     const False
>       (let x = undefined
>            y = Strict x
>       in True)
> 
>     let x = undefined
>         y = const False (Strict x)
>     in True

On second though, the second one shouldn't even compile because of the
kind error, right?


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
ghc-devs mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to