<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>Erick,</div><div><br class="webkit-block-placeholder"></div><div>After some experimentation, I'd prefer the closed system. LLVM has some type peculiarities like the commonality between <font class="Apple-style-span" face="Courier">CallInst</font> and <font class="Apple-style-span" face="Courier">InvokeInst</font>. I find that the closed type system lets me express such constraints more naturally. Expressing these constraints explicitly in the open system involves annotating the C++ class hierarchy with extra variants which are unnecessary in the closed model.</div><div><br class="webkit-block-placeholder"></div></div>Please use <font class="Apple-style-span" face="Courier">'a Llvm.ty</font> for Type and <font class="Apple-style-span" face="Courier">'a Llvm.v<span class="Apple-style-span" style="font-family: 'Trebuchet MS'; "> for Value to save typing. These choices avoid conflicting with the common type binding </span>t<span class="Apple-style-span" style="font-family: 'Trebuchet MS'; "> and the language keyword </span>val<span class="Apple-style-span" style="font-family: 'Trebuchet MS'; ">, but promote these important types to the type names into the </span>Llvm<span class="Apple-style-span" style="font-family: 'Trebuchet MS'; "> module (likely </span>open<span class="Apple-style-span" style="font-family: 'Trebuchet MS'; ">'d) for brevity's sake.</span></font><div><div><br class="webkit-block-placeholder"></div><div>I don't have a better suggestion than just naming the variant sum types <font class="Apple-style-span" face="Courier">Llvm.ll_____</font>. I considered some other options, but decided I'm not fond of them in practice.</div><div><br class="webkit-block-placeholder"></div><div>Thanks,</div></div><div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal 'Trebuchet MS'; "><font class="Apple-style-span" color="#000000" size="3"><span class="Apple-style-span" style="background-color: transparent; font-size: 12px;">Gordon</span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal 'Trebuchet MS'; "><font class="Apple-style-span" size="3"><span class="Apple-style-span" style="font-size: 12px;"><br class="webkit-block-placeholder"></span></font></div></div></div></body></html>