<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=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Apr 6, 2021, at 7:44 AM, Anthony Clayden <<a href="mailto:anthony_clayden@clear.net.nz" class="">anthony_clayden@clear.net.nz</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">> <span style="font-family: monospace, monospace; font-size: 1em; white-space: pre-wrap;" class="">But why does this matter?</span><div class=""><span style="font-family: monospace, monospace; font-size: 1em; white-space: pre-wrap;" class=""><br class=""></span></div><div class=""><span style="font-family: monospace, monospace; font-size: 1em; white-space: pre-wrap;" class="">Because I want the semantics of that equality constraint, without switching on any of these, which I don't otherwise use:</span></div><div class=""><span style="font-family: monospace, monospace; font-size: 1em; white-space: pre-wrap;" class=""><br class=""></span></div><div class=""><span style="font-family: monospace, monospace; font-size: 1em; white-space: pre-wrap;" class="">GADTs</span></div><div class=""><span style="font-family: monospace, monospace; font-size: 1em; white-space: pre-wrap;" class="">TypeFamilies</span></div><div class=""><span style="font-family: monospace, monospace; font-size: 1em; white-space: pre-wrap;" class="">TypeOperators</span></div><div class=""><span style="font-family: monospace, monospace; font-size: 1em; white-space: pre-wrap;" class=""><br class=""></span></div><div class=""><span style="font-family: monospace, monospace; font-size: 1em; white-space: pre-wrap;" class="">And if that means I can't use infix `~` in my constraints, I'll put up with that. (I'd user-define a conventional class, say `TypeCast`. Could be that has to be defined in terms of `~`, in which case I'd put that in a shim module as the only place with those extensions.)</span></div></div><br class=""></div></blockquote></div><br class=""><div class="">A shim module would work for you here, indeed.</div><div class=""><br class=""></div><div class="">Individuals' opinions of extensions will differ, but TypeOperators is much less powerful than either of the others: it affects only parsing, and in a fully backward-compatible way.</div><div class=""><br class=""></div><div class="">Richard</div></body></html>