Defining a wired-in type of a different kind
Simon Peyton Jones
simonpj at microsoft.com
Wed Apr 3 14:28:53 UTC 2019
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/45b15fd2/attachment.html>
More information about the ghc-devs
mailing list