<div dir="ltr">Hello, cafe,<div><br></div><div>The main problem I have when using promising type-level calculation is compile time.</div><div><br></div><div>E.g. I have </div><div>> type T = ... :: [Symbol]</div><div>Now I don't know the order of Symbols in T. But I want to sort it before using for some reasons.</div><div><br></div><div>I can define</div><div>> type T1 = Sort T   -- where Sort is from Singletons library</div><div>but T1 is only type synonym and long type-level calculation will be done in any places where I use T1.</div><div>So I will have problems with compile-time performance.</div><div><br></div><div>Probably I would overcome this if I can define </div><div>> class X x where ...</div><div>> instance X T1 where ...</div><div>but I can't do it because can't define instances for (non-injective) Type Families.<br></div><div><br></div><div><br></div><div>Is there any workaround?</div><div>Are there any plans to make it better?</div><div>Are there any hidden problems to make an analog of CAF on the type level?</div><div><br></div><div>Best regards,</div><div>Dmitry </div><div><br></div><div><br></div><div><br></div><div><br></div></div>