packages feed

cmptype-0.1.0.0: README.md

# 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/