cmptype: Compare types of any kinds

[ bsd3, library, type ] [ Propose Tags ]

Please see the README on GitHub at https://github.com/isovector/type-sets/tree/master/cmptype#readme


[Skip to Readme]
Versions [faq] 0.1.0.0, 0.1.0.1, 0.2.0.0
Change log ChangeLog.md
Dependencies base (>=4.7 && <5), ghc (>=8.6.3 && <8.8), magic-tyfams (>=0.1.1.0 && <0.2) [details]
License BSD-3-Clause
Copyright 2019 Sandy Maguire
Author Sandy Maguire
Maintainer sandy@sandymaguire.me
Category Type
Home page https://github.com/isovector/type-sets#readme
Bug tracker https://github.com/isovector/type-sets/issues
Source repo head: git clone https://github.com/isovector/type-sets(cmptype)
Uploaded by isovector at 2019-08-11T15:58:59Z
Distributions NixOS:0.2.0.0
Downloads 872 total (15 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2019-08-11 [all 1 reports]

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for cmptype-0.2.0.0

[back to package description]

cmptype

Hackage

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.