Description
Compare types of any kinds.
Description
Please see the README on GitHub at https://github.com/isovector/type-sets/tree/master/cmptype#readme
README.md
cmptype
Dedication
Comparison is an act of violence against the self.
--Iyanla Vanzant
Overview
cmptype
provides a magical type family that lets you compare types:
type family CmpType (a :: k) (b :: k) :: Ordering
When you turn on the -fplugin=Type.Compare.Plugin
flag, it will let you compare arbitrary types. Why would you want such a thing? Probably because you want to write a type-level container that isn't a fucking list!
Acknowledgments
Big thanks to Boris Rozinov for the initial idea, and for making as much coffee as I could drink while I wrote it. Also thanks to Christiaan Baaij and Matt Pickering for their indispensable help convincing GHC to do the right thing here.