<div dir="ltr">On Sun, 18 Dec 2022 at 03:54, Richard Eisenberg <<a href="mailto:lists@richarde.dev">lists@richarde.dev</a>> wrote:<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;"><br><div><br><blockquote type="cite"><div>On Dec 14, 2022, at 6:05 AM, Simon Marlow <<a href="mailto:marlowsd@gmail.com" target="_blank">marlowsd@gmail.com</a>> wrote:</div><br><div><span style="font-family:Helvetica;font-size:14px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;float:none;display:inline">It's clear that CPP needs to remain as a flag because it does bad things to the syntax like breaking multiline strings and doing strange things to `##`. But it's less clear to me that TemplateHaskell is in this category. Isn't it just an extension that enables new syntax? Yes there are *practical* reasons why we might not want it on by default, because it makes compilation slower and whatnot, but isn't that all it is?</span></div></blockquote></div><br><div>I somehow missed this, and more surprisingly just now found it.</div><div><br></div><div>TemplateHaskell isn't just for new syntax primarily because it has important interactions around cross-compilation. If/when GHC has a comprehensive story around cross-compilation, TH will change the way the pipeline works. It was this concern that suggested it should be lumped with CPP. (TemplateHaskellQuotes are a different story -- that's just syntax.)</div></div></blockquote><div><br></div><div>I think of cross-compilation as just a tooling issue that affects how you actually *implement* TH, but not something that changes what it means. Or perhaps I'm wrong? Is there a way in which enabling TH will change the meaning of a program that doesn't use any TH?</div><div><br></div><div>Cheers</div><div>Simon<br></div></div></div>