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

Roman

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