
Hi Pete,
This will let the user search though all the functions called, and see that function.s inputs and output. The UI will be based on that of JuK, with searching using haskell.s pattern matching syntax. Is this not just hat-observe?
A step over debugger for do blocks. This will be similar to normal debuggers Is this intended to be a brand new debugging tool?
Ethereal is a tool for examining network traffic, and my plan is to . borrow from it's "follow TCP stream" feature, which shows you all the traffic in a stream, and lets you see messages and replies. It will show text moving in and out of handles, and display the logical time between messages. So will this tool be an IO monitor? i.e. seeing all external actions which occur, and in what order?
This will allow the user to see how redexes happen and allow the use to see laziness in action. This will be based on hat-amin. It is dependent on writing a good graph drawing function. I think this will probably be more like a tree than a graph? If so its not that hard to do, lots of algorithms exist and they are pretty easy.
algorithmic
This will be a normal algorithmic debugger, though I haven.t thought of how it will work in a GUI. I had a design for this, basically a list of alternating question answer lines:
sort [] = [] <yes> <no> insert [] = [] <yes> <no> When a user clicks on a yes or a no which is at the bottom line, it generates a new question, when a user clicks on a yes or a no higher up, and different from the previous answer, it deletes the list below that point and generates a new question. This lets the user see their "choice history", and change it at any time, will being an essentially linear process for those people who don't want any additional complexity.
Any suggestions, comments? black-hat, hat-nonterm? Both are pretty trivial to integrate into a GUI, so it shouldn't be more than a few hours work. I would actually suggest doing these two first, just to figure out how to attack this on an easy problem.
One general point is that you seem to be proposing some new tools here? ethereal, monad, redex. Implementing a new tool is likely to take a lot longer than just guifying an existing one. You also might be biting off more than you can chew with that many new tools. (of course, if you can do it all, thats great!) I am looking forward to using hat-gui as a real debugging tool! Thanks, Neil