
Even better if the number was essentially a line number or similar (clause number?), to make it even more readable.
It can't be a line number, since you can potentially put two clauses on the same line. You could certainly do better with the desugaring, but I think a more annoying desugar problem comes with _LAMBDA's which crop up quite a bit, and have absolutely nothing tying them back to their original location.
How much in Core has an "obvious" translation from Haskell, such that different implementations or versions, can compile the same Haskell code and get the exact same Core text out? If only local things like the details of how let/lambda-bound variables are named, vary, there is more possible separate compilation of separate files (or something like that...). I think (line,column) is sufficiently unique identification? Maybe 200_4 would represent line 200, column 4. (or "200.4"? By itself, that looks like a fractional number, which is bad) Isaac