On Fri, Mar 02, 2012 at 01:04:13AM +0000, AntC wrote: > > Let me explain better what I mean by "two private namespaces", then we'll try > to understand how your proposal goes ... > > module T where > data FieldT = Field > data RecT = RecT{ Field :: Int } > ... > module U where > data FieldU = Field > data RecU = RecU{ Field :: Bool } > ... > module V where > import T -- also consider either/both > import U -- imports hiding (Field) > data RecV = RecV{ Field :: String } -- am I sharing this Field? > -- who with?
Ah, I see. No, you couldn't do that, just as you couldn't do v = Field You would need to say data RecV = RecV{ T.Field :: String } > ... r.Field ... -- is this valid?, if not what is? r!T.Field (I took the liberty of using a random different symbol for field access, for clarity). > ... r{ Field = e } -- likewise r{ T.Field = e } > (Oh yeah, imports and hiding: how do I do that for these > non-String-type-Kinds? > And is this allowed?: > data NotaField = Constr Int Bool > data AmIaRec = AmI{ Constr :: String } No. Thanks Ian _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users