getting type information about local bindings
Fri, 10 Nov 2000 01:23:28 -0800
Don't try to get the type environment out. Instead, look at the
syntax tree produced by the type checker. Each binder is an Id.
There's a function
idType :: Id -> Type
that tells you the type of each binder. Quite how you present it
to the user in a good way isn't clear to me,
| -----Original Message-----
| From: Bernard James POPE [mailto:email@example.com.OZ.AU]
| Sent: 10 November 2000 05:56
| To: firstname.lastname@example.org
| Cc: email@example.com.OZ.AU
| Subject: getting type information about local bindings
| Hi all,
| In GHC 4.09 the flag "-ddump-types" causes the type signatures of
| top-level bound identifiers to be printed.
| I would really like to make use of the type-checker in GHC,
| however, I would
| also like to obtain the types of locally bound identifiers
| (things in let expressions and where clauses). Obviously
| there is going to
| be some trickery regarding type variables from enclosing scopes.
| I looked in the TcModule.lhs module and noticed that the TcResults
| value returned by typecheckModule contains a value
| environment that only
| specifies the types of top bound identifiers.
| Further investigation of the code led me to the TcBinds.lhs module
| and the tcBindsAndThen function. I can see that local type
| are not passed upwards during type checking/inference.
| At some point I got lost in the code. Does anyone know of a
| reasonable means
| for obtaining this type information? I don't mind doing some
| hacking, but
| I wanted to get advise from the experts as to whether I might
| be wasting
| my time.
| Perhaps such a thing is done somewhere when generating Core code?
| As an aside I dare say that such an extension would be useful
| to other
| people, particularly those writing source transformation code.
| Glasgow-haskell-users mailing list