This SkillsCast is currently only available to registered attendees of Haskell eXchange 2020
It will be freely available to all Skills Matter members once the Haskell eXchange 2020 early-access window expires on December 04, 2020.
When GHC processes a Haskell program, it must perform type inference. This process includes both determining the types for definitions that lack type signatures and figuring out how polymorphic functions should be specialized at a particular usage site. To figure it all out, GHC looks at the Haskell program, generating constraints like "the type of x must match the expected argument type of f" and "the type of y must have a Show instance". Then, GHC must find a choice of types that satisfy all the constraints. After a brief introduction to this generate-constraints-and-solve approach, this example-driven talk will focus on the constraint solver, explaining how it works, and showcasing two large simplifications currently under way. Attendees will get a glimpse of how GHC works under the hood, learn why it's so hard to get good error messages, and get a sense for the kinds of problems that exist in GHC's type checker. This talk is also essential background information for anyone interested in writing type-checker plugins, though plugins will not be a focus of the talk. The audience should be able to understand simple Haskell programs; no advanced Haskell needed.
YOU MAY ALSO LIKE:
Simplifying Constraint Solving in GHC
Richard is a Principal Researcher at Tweag I/O. His research centers around how we can use static type systems to power high-assurance programming and avoid programmer mistakes, all without sacrificing ease-of-use or runtime efficiency. His language of focus is the pure functional language Haskell. Richard is a core contributor to GHC and serves on the GHC Steering Committee. He lives in suburban Philadelphia with his wife and daughter.