
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?