|
Hat 2.00 Bugs and Limitations
This is a list of all known bugs and limitations in Hat 2.00.
There is also a wish-list of features
that we would like to add to Hat.
Please mail
hat@haskell.org
to report any other problems you find.
hat-trans problems:
- hat-trans does not handle source programs with (..) in export
or import lists.
Fixed in Hat 2.00
- hat-trans output fails to compile if the source program
depends on defaults to resolve numeric types.
- hat-trans suffers a pattern-match failure if the source
program has an empty import list.
Fixed in Hat 2.00
- hat-trans can transform pattern bindings with newtype data
constructors incorrectly, duplicating variable definitions.
Fixed in Hat 2.00
- hat-trans output can fail at link time if the arity
of source definitions or applications is large.
- hat-trans output does not export selectors for field labels.
Fixed in Hat 2.00
- Data constructions in a trusted context are hidden if their
components are unevaluated.
- The grandparent of the subject expression in an if/case/guard
is recorded as its parent.
Not a bug.
Run-time problems:
- Programs that exhaust memory fail with no trace.
Problems with viewing a trace
General
- Named fields are not traced at source level.
- List comprehensions, do statements, and arithmetic ranges
are not traced at source level: they are recorded and displayed
in de-sugared form.
- Super-saturated applications are not shown.
- Traces involving pattern bindings may be incomplete.
- The viewing tools display some lists misleadingly: when the tail
of a sugared list is cut off or undefined it is shown as if it
was a final element.
- A unit value () causes both hat-trail and hat-observe to
crash with head []. (Example program: Cycles)
Fixed in Hat 2.00
- Viewing tools can hang where a cycle in a graph of trusted computation
includes a projection. (Example program: FunMod)
Hat-observe
- hat-observe inappropriately lists trusted CAFs under :info and
allows observations of CAF values that should be hidden.
- hat-observe :info counts may not match the number of observations
if there are partial or super-saturated applications. (Example program:
MixArity)
- hat-observe may incorrectly show applications as distinct when
arguments include a cyclic structure. (Example program: Cycles)
- ^C in a hat-observe window (to cut short a search) can shut
down a hat-trail window spawned from the same
hat-observe session.
- After :set recursive off hat-observe shows the non-recursive
calls of f even if given the application pattern f in f.
(Exmaple program: ObsRec)
- hat-observe report no match found given an application pattern
... in c where c has a 0-arity definition, even it matching
applications do occur in c. (Example program: ObsInCaf)
Hat-trail
- Scrolling sometimes blanks the upper part of the display when
the trace is extended and is deeper than the window. (Example
program: BigExp)
- If the output is empty, it cannot be selected.
- The display can become corrupted if output or error message
from the traced program is wider than the display window.
- The display can become corrupted if a single trail expression or
equation is large enough to scroll off the screen.
Hat-detect
- hat-detect is not currently included with the Hat browsing tools.
- Only useable for computations that produce faulty output, not for
computations that abort with an error message or are interrupted.
- Does not work correctly for programs that read input.
This page last modified: 13th June 2002
|