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
