Using MIT-Scheme 9.x, is there a way using the debugger or some other tool to inspect an anonymous compound-procedure (created by returning a lambda function), e.g. to find out exactly what code at what line it comes from?
For example, I'm currently doing something like:
(foo 2 3)
And I see an error message like:
;The procedure #[compound-procedure 65] has been called with 2 arguments; it requires exactly 0 arguments.
...where foo is doing some further dispatch (foo is not the problem here, it lies deeper). In this example, I'd really want to know the internals of #[compound-procedure 65] as it's obviously not what I expected. Does a Lisp/Scheme wizard out there know a way to get those details? Thanks.
There are some interesting debugging tools described on this page: Debugging Aids.
From the short experiment I tried, I think you can use the
pp
function to inspect the source of a compound procedure object:It appears that you can even get the source of
lambda
functions and compiled functions:There's some other interesting reflection tools on the linked page. MIT Scheme also has a bunch of stuff for messing with environments as first class objects which can be useful for certain debugging tasks. Hope that helps!