Desugaring overloaded functions

Simon Peyton-Jones simonpj at microsoft.com
Tue Nov 7 10:30:52 EST 2006


| This is great! However, I don't understand why:
| 'incL_afU',
| '$dNum_alp',
| 'fromInteger_alm',
| 'lit_al2' and
| '+_al3' are all listed under the same letrec?

The desugarer simply does whatever is easiest, leaving it to the simplifier to untangle the resulting dependencies. Doubtless we could make the desugarer more complicated, but doing so would make the simplifier no simpler (since it must do dependency analysis anyway).  Hence the current story.

| I would really like the output of 'Desugar.deSugar' to be like the latter.
| Because than I can apply some beta-reductions to get rid of the non-recursive
| lets and use that as input for the rest of my project...

The bit that does the dependency analysis is called the Occurrence Analyser.  Its in compiler/simplCore/OccAnal.  A single run of the occurrence analyser will produce a fully-dependency-analysed program. Maybe that's what you want?

Simon


More information about the Glasgow-haskell-users mailing list