# Hat 2.04 Wish List

This is a list of wishes (not bugs) to improve Hat 2.04. Elsewhere, there is a bug list of things that are incorrect. Please report any more wishes you can think of to: hat@haskell.org.

### Little Wishes

1. backspace to correct slips in : command-lines (Use stty erase ^H if readline is not available)
2. separate cutoff length for strings from general cutoff depth
3. advice for users wishing to use hat but not hmake
4. in hat-observe allow application patterns after "in"
5. in hat-observe, an option to show the number of instances of each uniquely represented application
6. in hat-observe bring back % progress indicators
7. in any viewing tool accept :S [qualified] name
8. scrolling and resizing of source windows (with line numbers instead of fixed source reference line)
9. viewing tools compare time-stamps of trace files with those of sources and issue warning if appropriate

### Bigger Wishes

1. combine traced and untraced modules by a more drastic wrapping (eg. data structures of type T computed within the wrapped module recorded as {T}) and subclassing to get around mismatch of method types (eg. Ord T => TOrd T and Ord a => Ord (R a))
2. support tracing of locally defined functions by recording bindings for free variables (eg. add refs to static parent names in local name nodes and extend local argument lists to include free variables defined within top-level parent with the name entries for these variables)
3. with or without 2, hat-observe to support observation of locally defined functions or data values if :set locals on. Locals to be listed by :i (indented below their parents?) and observations of locals to be split into same-instance groups (headed by whatever contextual bindings for variables are available)
4. extensional observation by hat-observe of a (\..) selected in hat-trail (important to ensure that all observations are of exactly this function not just a function with same source)
5. evaluation windows with bindings to selected expressions from trace viewers (quite easy for expressions that only contain top-level function names and/or fully evaluated data; anything else poses representation problems)
6. hat-trail to list the sequence of IO actions, not just text output to stdout
7. further decompose textual output into pieces connected by ++
8. hat-trail to support multiple steps along trails Eg: - to nearest ancestral application of any top-level function - to nearest ancestral application of a named function - to nearest non-recursive ditto
9. hat-trail to support single-step forward reduction from a redex (perhaps shown as indented lines starting ->)
10. option to assert trust in named modules or top-level functions in all trace-viewing tools
11. hat-detect for new-format traces including correct handling of untrusted computation in a trusted context and an option to show all children of current EDT node
12. generalise hat-observe to hat-query, with a user-programmable query language for more general and powerful access to the hat trace than current commands
13. user-programmable display of expressions in textual or graphical form
14. hat-observe option to see arguments and results of trusted (and perhaps other) functions that have 0-arity definitions
15. a coordinating environment for tracing that, for example, automatically closes trace windows when program is modified and/or run again
16. a tool that cleanly truncates a trace file as if the computation had been interrupted at some specified break-point
17. more support in hat-trail for tracing parent uses of zero-arity definitions and their source locations
18. run-time options to report the number of reductions (or other computational steps) in an untraced computation and to report corresponding numbers (or better still, a % indicator) at intervals during a traced computation
19. make source windows active, for example allowing selection of an application or function for observation in hat-observe
20. editable command lines with readline functionality Done
21. special-purpose tool to locate black-holes in traces Done, see black-hat
22. add an evaluation bit to projection/forward nodes allowing {_}/{?} to be displayed as _ where appropriate

### Controversial Wishes

1. option to show lambda expressions in full
2. a graphical user interface for hat viewers
3. always display error "... message ..." if available, not _|_
4. a Free Navigation viewer Done, see hat-source
5. support for tracing stateful monadic computations in terms of sequences of states
6. option to use unification instead of one-way matching with application patterns in hat-observe
7. :o in hat-trail to use the currently selected expression as the implicit application pattern to observe

This page last updated: 5th February 2003