<div dir="ltr"><div dir="ltr">On Fri, Dec 4, 2020 at 5:03 PM Iavor Diatchki <<a href="mailto:iavor.diatchki@gmail.com" target="_blank">iavor.diatchki@gmail.com</a>> wrote:<br></div><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 dir="ltr">I don't want GADTs to on by default, because pattern matching on them does not work the same as with normal data types (i.e., you often need to have an explicitly type signature, or be aware of GHC type checking algorithm to know when a type signature is not needed).  So I'd like to be able to see explicitly that GADTs might be in play.</div></blockquote><div> </div></div><div class="gmail_quote">For what it's worth, you can pattern-match on GADTs with GADTs off (but then you need TypeFamilies on, which still seems to be on its way to GHC2021 (though see Richard's “a few more pleas”)).</div><div class="gmail_quote"><br></div><div class="gmail_quote" style="margin-left:40px">> :set -XGADTs <br>> data T a where { MkT :: T Int }<br>> :set -XNoGADTs <br>> :set -XTypeFamilies <br>> f :: T a -> a; f MkT = 0</div><div class="gmail_quote"><br></div><div class="gmail_quote">I really see very little reason to not add GADTs (except MonoLocalBind, maybe, see Richard's email again, but it applies to TypeFamilies too).<br></div></div>