# is shadowing allowed in CoreSyn?

Mon Feb 14 15:13:25 CET 2011

Thank you (and Dimitrios) once again for so patiently answering my
System FC (and CoreSyn) questions!

http://www.cs.berkeley.edu/~megacz/garrows/ghc.-ddump-proofs.pdf

Hopefully this will soon lead to something more useful than gigantic,
illegible proof-tree printouts. :)

One last clarification:

Simon Peyton-Jones <simonpj at microsoft.com> writes:
> |  If it is okay, I assume it creates a situation where you may shadow, but
> |  only if the variables have the same type.  In other words, you can't
> |  represent this term without doing some \alpha-renaming:
> |
> |    \lambda x:Int . \lambda x:Char . e
>
> Yes, that's fine too.  You can shadow without using the same type.

Hrm, doesn't each "Var" know its own type (via Var.varType, a field of
the Id alternative)?  How could I use the same Var twice at different
types?  Or did you mean that OccName-shadowing is allowed, but