Version 4 (modified by john@…, 9 years ago) (diff)


Multi Parameter Type Classes Dilemma

MultiParamTypeClasses are very useful, but mostly in the context of FunctionalDependencies. They are particularly used in the monad transformer library found in fptools. The dilemma is that functional dependencies are "very, very tricky" (spj). AssociatedTypes are promising but unproven. Without a solution, Haskell' will be somewhat obsolete before it gets off the ground.

Options for solving the dilemma

  1. Examine a limited version of functional dependencies (are there any concrete proposals?)
  2. Put AssociatedTypes on the fast-track for sainthood
  3. Punt: declare FunctionalDependencies as an extension and figure out a way to "bless" extensions
  4. Find a subset of FunctionalDependencies that is guarenteed to be a subset of what is expressible with AssociatedTypes. This would ensure no Haskell' programs become unexpressable if FDs switched to AssociatedTypes in the future.

Options that don't actually solve the dilemma

  1. Standardize without MultiParamTypeClasses or FunctionalDependencies
  2. Standardize FunctionalDependencies even though they are tricky.