+
+
+ Hat Tools:
+ bugs and wish-list
+
+
+
+
+This is a fuller list of bugs and wishes for
+the prototype tracing browsers in Hat.
+(There is also an overview page,
+and a more detailed page for the trail-building
+compiler.)
+Please mail us at
+ ART-team@cs.york.ac.uk
+with any other bugs or wishes.
+
+ Bugs in hat-trail
+
+
+- Display blanking.
+ The upper part of the display is blanked when the current expression
+ causes previous expressions to scroll upwards, and the topmost
+ expression is not exactly at the start of the page.
+ (Test case: trace back recursive calls of player' in Adjoxo.)
+
- Indirections. Sometimes handled incorrectly?
+ (Test case: Olaf to supply.)
+
+
+Wishes in hat-trail
+
+
+- Interrupted evaluation.
+ Distinguish this case from undefined. Display as
+ redex = {interrupted} not redex = _|_.
+
- String and list navigation.
+ [ and ] to become commands to move forward/backward to next/previous
+ list element (implicit user claim that current selection is within a
+ list).
+
- Selection and sharing.
+ There should always be exactly one selected expression, clearly
+ indicated by a unique form of highlighting. Thus, (1) the highlight
+ should never vanish, and (2) there should not be multiple highlighting.
+ [MAYBE: options to show sharing (1) in same redex/equation, or
+ (2) everywhere, by a different form of highlighting.]
+
- Dependent source browsers.
+ Should be closed when user quits hat-explore. Could usefully allow
+ scrolling to see wider context.
+ [MAYBE ONE DAY: extend source highlight to show entire expression or
+ definition, not just its starting point.]
+
+
+Bugs in hat-observe
+
+
+- Bogus reductions.
+ Sometimes equations with identical LHS and RHS are shown:
+ eg. observe reduceAll in TableauRefac v.3.
+ (May be a problem of unknown arities and partial applications,
+ more easily fixed with the new .hat format.)
+
- Application of the same function to two (separate but?)
+ identical cyclic structures causes an infinite loop because
+ of processing to find unique most general representatives.
+
+
+Wishes in hat-observe
+
+
+- Identifier Info.
+ The :info command should also show for each listed name a count
+ SAT-C (+ SAT-B): eg. 173 (+ 2), or 0 (+ 3), but simplifying
+ 64 (+ 0) to 64 and discarding items with 0 (+ 0) counts
+
- Patterns/equations after 'in'.
+ Permit a pattern and/or equation on the RHS of 'in'. For example,
+ observe f _ = True in g _ = False.
+
- Observing constructors.
+ Should be possible -- for example, to check invariants respected.
+ Corollaries: (1) hat-observe should also have an = toggle which is
+ always toggled off for constructor observations (and restored
+ to its previous state afterwards); (2) there should be a command
+ analogous to i for constructors (an I command would be mnemonic
+ because of the upper-case convention for constructors).
+
- Local observations.
+ There could be an option (with suitable warning) to include
+ locally-defined names among the observables. Not all depend on
+ free variables anyway. Locals should perhaps be tagged in some
+ way in the i listings (name in { }?).
+ [MAYBE ONE DAY: support full observation of locals with context
+ of free-variable bindings in .hat file. Add refs to static parent
+ names in local name nodes; extend local argument lists to include
+ free variables defined within top-level parent's (and name entries
+ for these variables).]
+
- Families of bservations.
+ [MAYBE: option to group observations with a common source for
+ the application?]
+
- Separated observations.
+ The user may want to observe each separate application (rather than
+ unique most general representatives) because different applications
+ have different contexts (if explored) and/or may have different
+ unevaluated expressions beneath _'s.
+ (The 'xu' flag is an unsafe and incomplete solution: it is not a
+ first-class option and needs arity info to be correct.)
+
+
+Bugs in hat-detect
+
+
+- hat-detect does not find calls to untrusted functions within trusted
+ functions unless they are reachable from SAT for the trusted application.
+ (Eg. calls of a filter predicate.)
+ Fix requires a linear scan to find relevant untrusted applications,
+ assuming accurate trustedness info in the .hat file -- Olaf says it
+ should be "perfect" using the new portable transformation!
+
- hat-detect does not work for interrupted or failing computations.
+ The new .hat format will make it easy to remedy this defect, but
+ meanwhile a linear search could again provide a solution.
+
+
+Wishes in hat-detect
+
+
+- A free navigation mode, to browse the full call-graph of the
+ computation. As a small start: a command to list the immediate
+ EDT children of the current equation.
+
+
+General bugs
+
+
+- Haskell 98 gaps or bitterness: n+k, comprehensions, do-notation, etc.
+
+
+General wishes
+
+
+- Merge pretty-printers for all tools to ensure consistency.
+
- Put arity information into .hat files (even before new format)?
+
- All tools to support changes in width of display window (ideally
+ with automatic response, but at least after :resize).
+
- Tools should compare creation/modification times of sources, executable,
+ trace and recorded output, and warn of apparent anachronisms.
+
- CAFs defined by higher-order expressions such as composition chains
+ do not trace nicely (eg. one has to 'observe' inner calls before one can
+ 'explore' them -- and even 'observe' may not reach them).
+ Also, trusted CAFS (eg. Prelude functions such as reverse) give only
+ the single observation of the CAF reduction, not applications.
+ [MAYBE: de-CAF Prelude functions? Introduce "quasi-trusted" functions
+ such as composition? (Cannot just make it untrusted or else all
+ compositions within the Prelude would be recorded too.)]
+
- A "hat" tool that co-ordinates calls of specialised tools and keeps
+ track of dependent windows etc.
+
- [MAYBE: Readline functionality in command-based tools.]
+
- Some people would like to animate reductions forwards rather than
+ trace them backwards.
+ [MAYBE ONE DAY: hat-animate when we have the new .hat format.]
+
- Further tools for call-graph, data-flow and black-hole tracing.
+
- Even faster construction of traces.
+
+
+
+
+This page last modified: 15th March 2002.
+
+
+ |