<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Good to see you around, Sandy!<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Mar 18, 2020, at 6:54 PM, Sandy Maguire <<a href="mailto:sandy@sandymaguire.me" class="">sandy@sandymaguire.me</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">I mean if `insert :: a -> Container a -> Container a`, and I call it with `[e| insert 5 True |]`, the quote will fail.</span></div></blockquote></div><br class=""><div class="">I don't observe this. Specifically, when I compile</div><div class=""><br class=""></div><div class=""><div class=""></div></div><blockquote type="cite" class=""><div class=""><div class="">{-# LANGUAGE TemplateHaskellQuotes #-}</div><div class=""><br class=""></div><div class="">module Bug where</div><div class=""><br class=""></div><div class="">import Prelude ( Bool(..), undefined )</div><div class=""><br class=""></div><div class="">data Container a</div><div class=""><br class=""></div><div class="">insert :: a -> Container a -> Container a</div><div class="">insert = undefined</div><div class=""><br class=""></div><div class="">quote = [e| insert 5 True |]</div></div></blockquote><div class=""><br class=""></div><div class="">GHC happily succeeds.</div><div class=""><br class=""></div><div class="">I think what you want, though, is reasonable: you want the ability to send an expression through GHC's type-checker. I think we'd need to extend TH to be able to support this, and it will be hard to come up with a good design, I think. (Specifically, I'm worried about interactions with top-level defined entities, whose types might not really be known by the time of splice processing.) This might all be worthwhile -- singletons would be able to be improved with this, for example -- but it's not cheap, sadly.</div><div class=""><br class=""></div><div class="">Richard</div></body></html>