
On Fri, Jun 22, 2007 at 01:12:33PM +0530, Kartik Vaddadi wrote:
Hello, When I compile a program that contains a lambda, the compiler assigns it a name like LAMBDA245. Is there any simple way to retrieve the body of the lambda, in an automated way, perhaps by modifying the compiler?
I'm building a tracer/debugger that shows the structure of the heap, using a redex trail-like data structure, and it describes indirections in the heap well, except when lambdas are involved. In the latter case, the compiler-generated names obviously mean nothing to the user and don't help him identify which of the lambdas in the code was evaluated. Is there any easy way to map the name of the lambda to its body (as Haskell source, not bytecode) without doing a source-to-source transformation? Thanks.
I started a project exactly like that a few months ago (stagnant for reasons that don't affect you at all); while reading Simon Marlow's publications list earlier today, I stumbled on an interesting reference - Freja, the first of the Haskell debuggers, operated in exactly this way, using an instrumented GHC (maybe it was HBC? the paper didn't say) runtime system. Might be worth checking out. I think it would be a good idea for Yhc to generate lambda names using an encoded form of the token location. Stefan