TDNR without new operators or syntax changes

Peter voldermort at
Sat May 28 20:11:45 UTC 2016

A slightly more refined definition for disambiguation:

1) If a type signature has been supplied for an ambiguous name, GHC will
attempt to disambiguate with the type signature alone.
2) If the name is a function applied to an explicit argument, and the type
of the argument can be inferred without disambiguating anything (or is
supplied as a type signature), then GCH will attempt to disambiguate by
matching the type of the argument.

This is sufficient to cover all of the motivating examples proposed for
TDNR, and every case where I have personally wanted it. It does not require
backtracing (although it may require two passes to disambiguate on the
inferred type of an argument), and disambiguating one name will not depend
on disambiguating any other name.

View this message in context:
Sent from the Haskell - Glasgow-haskell-users mailing list archive at

More information about the Glasgow-haskell-users mailing list