homepage: https://github.com/https://github.com/isovector/type-sets/tree/master/cmptype#readme
changelog-type: markdown
hash: bbc22393f6cd2b367da4b255ef9fce7cfb767942f8ce64fa314681de4837513d
test-bench-deps:
  ghc: ! '>=8.6.3 && <8.8'
  base: ! '>=4.7 && <5'
  cmptype: -any
  should-not-typecheck: -any
  magic-tyfams: ! '>=0.1.0.0 && <0.2'
maintainer: sandy@sandymaguire.me
synopsis: Compare types of any kinds
changelog: |
  # Changelog for type-sets

  ## 0.1.0.0 --- 2019-08-05

  Initial release!

  ## Unreleased changes
basic-deps:
  ghc: ! '>=8.6.3 && <8.8'
  base: ! '>=4.7 && <5'
  magic-tyfams: ! '>=0.1.0.0 && <0.2'
all-versions:
- 0.1.0.0
author: Sandy Maguire
latest: 0.1.0.0
description-type: markdown
description: |+
  # cmptype

  [![Hackage](https://img.shields.io/hackage/v/cmptype.svg?logo=haskell&label=cmptype)](https://hackage.haskell.org/package/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:

  ```haskell
  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][type-sets]!

  [type-sets]: https://github.com/isovector/type-sets


  ## Acknowledgments

  Big thanks to [Boris Rozinov][oofp] for the initial idea, and for making as much
  coffee as I could drink while I wrote it. Also thanks to [Christiaan
  Baaij][chistiaanb] and [Matt Pickering][mpickering] for their indispensable help
  convincing GHC to do the right thing here.

  [oofp]: https://github.com/oofp
  [chistiaanb]: https://christiaanb.github.io/
  [mpickering]: http://mpickering.github.io/

license-name: BSD-3-Clause

Update from Hackage at 2019-08-06T18:27:03Z
Update from Hackage at 2019-08-06T18:27:03Z
