Haskell's type classes are a very powerful tool and give Haskell a great expressive ability, compared to functional languages that don't have them. When were they invented, and who invented them?
The paper which introduced type classes was "How to make ad-hoc polymorphism less ad-hoc" by Wadler and Blott in 1988. In the paper, they mention that type classes were discovered during the standardization work on Haskell, however the wording doesn't make it clear who discovered them. (One would assume it was the authors, but that isn't said explicitly.)
They mention some prior art by Stefan Kaes.
The Acknowledgement section says:
The important idea that overloading might be reflected in the type of a function was suggested (in a rather different form) by Joe Fasel. For discussion and comments, we are also grateful to: Luca Cardelli, Bob Harper, Paul Hudak, John Hughes, Stefan Kaes, John Launchbury, John Mitchell, Kevin Mitchell, Nick Rothwell, Mads Tofte, David Watt, the members of the Haskell committee, and the members of IFIP 2.8.