~/talk

Quotient Polymorphism

links:none on file
links:none on file
slides:none on file

Adds choice polymorphism for quotiented types to stop repeating equivalent functions and to accept valid-but-rejected code, implemented in Quotient Haskell on top of Liquid Haskell. Uses quotient inductive types (bags, multisets, sets) with implicit coercions between layers, pushes respectfulness checks to instantiation and solver discharge (SMT/Z3), infers quotient variables and uses anti-unification for their types, and lets examples like map, filter, and count/isMember typecheck where before they failed. Implementation and examples are on the project GitHub.

AI-written summary · about

  1. 0:00Introduction
  2. 1:01Subtyping vs quotient types
  3. 3:28Quotient inductive types
  4. 7:40Motivation
  5. 10:31Choice polymorphism
  6. 11:34Typing for variables
  7. 14:43Anti-unification
  8. 16:30Choose quantifier
  9. 18:37Choice polymorphic functions
  10. 21:51Fixing the is member function example
  11. 22:55Costed types example
  12. 24:27Conclusion
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.