<div dir="auto">But how do I have to build something like "openAlphaTyVar" for TYPE 'UnliftedRep in the primitive space? I don't understand the toolkit.</div><br><div class="gmail_quote"><div dir="ltr">On Tue, Aug 21, 2018, 11:07 AM Ben Gamari <<a href="mailto:ben@smart-cactus.org">ben@smart-cactus.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">David Feuer <<a href="mailto:david@well-typed.com" target="_blank" rel="noreferrer">david@well-typed.com</a>> writes:<br>
<br>
> On Monday, August 20, 2018 12:11:14 PM EDT Simon Peyton Jones via ghc-devs wrote:<br>
>> I don’t quite know how primops.txt.pp is processed, but perhaps by utils/genprimopcode.   You may need to update the syntax a bit?<br>
><br>
> The whole thing is a mystery to me. Whatever it's doing seems to<br>
> generate code that puts things in TysPrim.hs together, and that module<br>
> also looks rather murky to the uninitiated.<br>
<br>
primops.txt.pp is processed by genprimopcode, as suggested by Simon.<br>
genprimopcode has several modes, each of which produces a different<br>
output. These are listed in compiler/<a href="http://ghc.mk" rel="noreferrer noreferrer" target="_blank">ghc.mk</a>; grep for<br>
preprocessCompilerFiles. They broadly fall into three categories:<br>
<br>
 * A set of headers which define the `PrimOp` type and functions defining<br>
   primops' various properties (e.g. out-of-line-ness)<br>
<br>
 * The GHC.PrimopWrappers module of `ghc-prim`, which defines functions<br>
   wrapping each of the primops; these are used by GHCi (see Note<br>
   [Primop Wrappers]<br>
<br>
 * The `GHC.Prim`module of `ghc-prim`, which has no code but rather<br>
   merely serves as a documented source file to be used by Haddock.<br>
<br>
genprimopcode's notion of non-Type kinded tyvars is very limited. It<br>
provides a few tyvars of kind Type (namely a, b, and c) and an<br>
"open-kinded" tyvar of any runtime rep (namely o). I believe you would<br>
need to add an additional binder to the genopcode parser to get what you<br>
want. I suspect this would only require a few lines, however.<br>
<br>
Cheers,<br>
<br>
- Ben<br>
<br>
</blockquote></div>