type-errors: Tools for writing better type errors

[ bsd3, library, type ] [ Propose Tags ]

Please see the README on GitHub at https://github.com/isovector/type-errors#readme

[Skip to Readme]
Versions [faq],
Change log ChangeLog.md
Dependencies base (>=4.7 && <5), first-class-families (>=, syb, template-haskell, th-abstraction [details]
License BSD-3-Clause
Copyright 2019 Sandy Maguire
Author Sandy Maguire
Maintainer sandy@sandymaguire.me
Revised Revision 1 made by isovector at 2020-06-10T16:51:49Z
Category Type
Home page https://github.com/isovector/type-errors#readme
Bug tracker https://github.com/isovector/type-errors/issues
Source repo head: git clone https://github.com/isovector/type-errors
Uploaded by isovector at 2019-07-03T18:07:59Z
Distributions Arch:, NixOS:
Downloads 2303 total (141 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-07-03 [all 1 reports]


[Index] [Quick Jump]


Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees

Readme for type-errors-

[back to package description]


Build Status Hackage


View the gradients of adversity as the colors that paint your story, and the power of experience as what makes you a great teacher, creator, philosopher, entrepreneur, artist, and human. Everything works out eventually.

Jennifer Sodini


type-errors is a collection of tools for writing better, more ergonomic, type errors. Some of the more interesting features are the ability to observe stuckedness and phantomness, as well as perform substitutions over types.

For more information, check out the haddock documentation.


This project wouldn't be possible without the help of two amazing people:

  • kcsongor who came up with the original technology behind this library.
  • Lysxia for articulating the approach to making IfStuck work for things of all kinds, and for helping me with the substitution machinery.