[Hat] GUI for Hat

Neil Mitchell ndmitchell at gmail.com
Fri Jul 28 15:01:29 EDT 2006


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


More information about the Hat mailing list