Hi Jan, mkAlgTyCon is good for making an algebraic datatype -- like Maybe or Bool or Either. It's not what you want for RNil, which is really a data constructor. Instead, rowKindCon should be the algebraic datatype, and RNil should be one of its constructors. Then you get the RNil TyCon via promotion, as Matt suggested.
I hope this helps! Richard > On Apr 3, 2019, at 7:06 AM, Jan van Brügge <[email protected]> wrote: > > > Hi, > > when trying to get familiar with the GHC code base for my Bachelor's > thesis. I followed the GHC Wiki, especially the case study about the > bool type. > Now I wanted to add a new kind and a new type inhabiting this kind > (without having to expose a data constructor, so without datatype > promotion). > > So in TysWiredIn.hs I added the new TyCons and added them to the list of > wired-in types: > > -- data Row a b > rowKindCon :: TyCon > rowKindCon = pcTyCon rowKindConName Nothing [alphaTyVar, betaTyVar] [] > > rowKind :: Kind > rowKind = mkTyConTy rowKindCon > > -- data RNil :: Row a b > rnilTyCon :: TyCon > rnilTyCon = mkAlgTyCon rnilTyConName [] rowKind [] Nothing [] > (mkDataTyConRhs []) > (VanillaAlgTyCon (mkPrelTyConRepName rnilTyConName)) > False > > rnilTy :: Type > rnilTy = mkTyConTy rnilTyCon > > > I also added two new empty data decls to ghc-prim, but if I inspect the > kind of RNil it is not Row, but Type. So I think I am either > understanding res_kind wrong or I have to do something completely different. > I am also not sure how to verify that the code in TysWiredIn.hs is > working at all, from all what I can tell it could just be the > declarations in ghc-prim that result in what I see in ghci. > > Thank you and sorry for my beginner question > Jan > > _______________________________________________ > ghc-devs mailing list > [email protected] > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
_______________________________________________ ghc-devs mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
