Output language of typechecking pass?
benjamin.redelings at gmail.com
Wed Oct 27 13:54:17 UTC 2021
I have been looking for info on what actually comes out of the
type-checking pass in GHC. This is mostly because it seems like the
"Type classes in Haskell" paper implements both type checking and
translation to dictionary-passing in one pass, whereas it seems like GHC
separates this into (i) type checking and (ii) desugaring.
1. It seems like this separation is actually necessary, in order to
apply generalization only to let arguments written by the programmer,
and not to let bindings introduced during desugaring. Is that right?
2. Does the output of type checking contain type lambdas?
3. Does the type checking pass determine where to add dictionary arguments?
4. Are there any other resources I should be looking at?
I am confused about #3, because the `-ddump-tc` output doesn't seem to
show any type dictionaries in function bodies themselves, but it does
seem to contain some kind of info about dictionaries as "evidence" --
but I am not sure what "evidence" is, or how it links into the AST for a
function body. I did briefly look at `-ddump-tc-ast`, but not in detail
More information about the ghc-devs