Excerpts from Dan Doel's message of 2015-09-04 09:57:42 -0700:
> All your examples are non-recursive types. So, if I have:
> 
>     data Nat = Zero | Suc Nat
> 
> what is !Nat? Does it just have the outer-most part unlifted?

Just the outermost part.

> Is the intention to make the !a in data type declarations first-class,
> so that when we say:
> 
>     data Nat = Zero | Suc !Nat
> 
> the !Nat part is now an entity in itself, and it is, for this
> declaration, the set of naturals, whereas Nat is the flat domain?

No, in fact, there is a semantic difference between this and strict
fields (which Paul pointed out to me.) There's now an updated proposal
on the Trac which partially solves this problem.

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

Reply via email to