Thanks, that's what I wanted.

But unfortunately it doesn't work as the function apparently was compiled inline or something to that effect.

As a more general solution to this kind of interactive debugging issue, how difficult would implementing a typical Common Lisp REPL be? I'm thinking of adding the kind of error/condition handler like:

"<error or condition goes here>

enter a number:

0 - enter new value
1 - exit to top level
2 - exit one level
3 - print stack trace
4 - etc.

I'm not familiar with Racket's internals so I don't know how much this is a REPL hack vs. rewriting the whole system (the condition system isn't necessary)... If it's not too impossible I would be happy to make this contribution...

On 06/27/2013 12:14 PM, Matthias Felleisen wrote:
Got it.

Assuming f is assignable:
-- define a new version of the function with its improved contract
   (define/contract fprime ...)
-- (set! f fprime)





On Jun 27, 2013, at 10:53 AM, Sean Kanaley <skana...@gmail.com> wrote:

All of Racket seems to be available while debugging GUIs.  I can query state 
and launch new error-free dialogs while the GUI sits there with its broken 
dialog.  I was thinking then that there might be some way to change the 
associated contract of the offending function while the GUI patiently waits for 
its next event.

Also it was type [A]...I made the mistake of calling the range of a function like 
"member" "boolean?".

The goal is to enter:

(set-contract! <function> (-> ... (listof symbol?))

and carry on.

On 06/27/2013 10:32 AM, Matthias Felleisen wrote:
I am not sure what you're asking.

-- Once your program has raised a contract error and your program didn't handle 
it, you're stuck.

-- Did the contract error suggest

  [A] you formulated the wrong contract (the program is working but the 
contract is too stringent)
  [B] you program has a bug

Before you restart try to figure out which one is which and fix something.




On Jun 27, 2013, at 12:35 AM, Sean Kanaley <skana...@gmail.com> wrote:

Hello,

I'm debugging a heavily stateful GUI app that has reached a very specific state 
but has come across a contract error.  Is there some way to modify the contract 
and proceed or I must I reevaluate and run the gui and attempt to duplicate the 
state?
____________________
Racket Users list:
http://lists.racket-lang.org/users

____________________
 Racket Users list:
 http://lists.racket-lang.org/users

Reply via email to