Defining a wired-in type of a different kind
Jan van Brügge
jan at vanbruegge.de
Wed Apr 3 14:33:47 UTC 2019
I did, see here:
https://gitlab.haskell.org/jvanbruegge/ghc/blob/73b383275f3d497338ca50a3a7934445c3858450/compiler/prelude/TysWiredIn.hs#L235
Am 03.04.19 um 16:28 schrieb Simon Peyton Jones:
>
> Make sure you add the new wired in this to `TysWiredIn.wiredInTyCons`
>
>
>
> *From:*ghc-devs <ghc-devs-bounces at haskell.org> *On Behalf Of *Jan van
> Brügge
> *Sent:* 03 April 2019 12:06
> *To:* ghc-devs at haskell.org
> *Subject:* Defining a wired-in type of a different kind
>
>
>
> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20190403/076e6e6e/attachment.html>
More information about the ghc-devs
mailing list