[Haskell-cafe] Disambiguating a Num/RealFrac instance

amindfv at gmail.com amindfv at gmail.com
Wed May 27 00:35:55 UTC 2015


data GPA = F Float | Excuse String

class ToGPA a where
  giveGPA :: a -> GPA

Is there any way (without IncoherentInstances or Rebindablesyntax) that I can let the user write e.g. "giveGPA 4.0" (and "giveGPA 4") and get back "F 4" without getting type errors that "4.0"'s type is ambiguous? I can guarantee there won't be any additional instances to "ToGPA"

(For my uses, I really (actually!) don't want to make the user write e.g. "F 4.0")

I've gotten this working, once with IncoherentInstances and once with RebindableSyntax, but both of those flags feel pretty dirty.


More information about the Haskell-Cafe mailing list