The current home
This looks like a nice list. (1) Is it out-of-date? (2) Is there a few paragraphs we could tell to orient all of those papers with respect to one another?
Probably out of date. Not much narrative, mostly just terse high-level descriptions and "this source file defines that types/function". In particular, only says "The best place reading for the constraint solver is the paper Modular type inference with local assumptions".
A somewhat short list. Seems like it gives non-negligible notes about each. It's about features of the type system, but not the constraint solver. Looks like that is primarily just OutsideIn.pdf at this point (and maybe the QuantifiedContexts paper too, and Chak et al's coercions/fundeps/tyfams too I guess etc, but OutsideIn.pdf seems to cover that pretty well if I understand correctly).
Important, but overwhelmingly dense! Excludes data Ct
.
Looks to be 11 years old. Probably inconsistent to varying degrees with current implementation. But large parts might still be relevant. Probably a good bridge from Chak et al's papers and OutsideIn.pdf to the code.
- https://gitlab.haskell.org/ghc/ghc/issues?scope=all&utf8=%E2%9C%93&state=all&label_name[]=typechecker%20plugins
- https://gitlab.haskell.org/ghc/ghc/issues/16639 not used in pattern checker
- https://gitlab.haskell.org/ghc/ghc/issues/15248 RAE, coercions too floaty
- https://gitlab.haskell.org/ghc/ghc/issues/15147 let plugin see Wanted CFunEqs
- https://gitlab.haskell.org/ghc/ghc/issues/10833 opt-in to injective decomposition
- https://gitlab.haskell.org/ghc/ghc/issues/15745 confusing message due to plugin exceptions
- (active PR) https://gitlab.haskell.org/ghc/ghc/-/merge_requests/611 "zapping" coercions, confirming they're only important for -dcore-lint
- (can't remember issue number) GHC adds excessive parens when pretty-printing type operators
- 1995 Mark Jones "Simplifying and Improving Qualified Types" (pdx.edu)
- 2015 Adam Gundry "A Typechecker Plugin for Units of Measure" (GitHub)
- 2015 Iavor Diatchki (yav) "Improving Haskell Types with SMT" (GitHub)
- 2016 Jan Bracker, Henrik Nilsson "Supermonads" (GitHub)
- 2018 Divesh Otwani, Richard Eisenberg, (Ben Gamari) "The Thoralf Plugin: For Your Fancy Type Needs" (GitHub)
- 2019 Luke Horvat/Sandy McGuire (GitLab) (GitHub)
- (see publications above)
- Christiaan Baaij
- 2018 Oleg Grenrus "regular expression of types" https://github.com/phadej/kleene-type
- 2018 Joachim Breitner "synthesis of singletons" https://github.com/nomeata/ghc-justdoit
- 2020 Samuel Gélineau (gelisam), "type-level rewrite rules" (GitHub)
- 2020 Matthías Páll Gissurarson (Tritlo)
- (catalog) Matthew Pickering https://mpickering.github.io/plugins.html
- 2016 Baaij Christiaan https://christiaanb.github.io/posts/type-checker-plugin/
- 2019 Sandy Maguire https://reasonablypolymorphic.com/blog/faking-fundeps/
- 2018 Gabe Dijkstra https://skillsmatter.com/skillscasts/12388-write-your-own-ghc-type-checker-plugins
- 2020 Nicolas Frisby https://www.youtube.com/watch?v=sE1qWyQWWVY impliciation trees, Given Wanted Derived WD