I have been skimming Bruce McAdam's PhD dissertation this morning, which is titled "Repairing Type Errors in Functional Programs". It's a pretty neat blend of pragmatics and type-theoretical wankery. I like the following passage from the introduction:
To see what sort of help programmers might appreciate, consider how spell-checkers work. These are among the most useful programs in popular use today. They can point out where you made spelling mistakes, and suggest how to correct them. A spell-checker would be neither useful nor popular if it only pointed out that you had made a mistake without suggesting how to correct it, or if it gave information which looked at the problem from the perspective of how it worked rather than from the writer’s perspective, e.g.
Spelling error at character 3.
Cannot follow "ry" with "p"
This however is the style of response produced for programmers by compilers.