[Hat] Another hat-trans bug?
Malcolm.Wallace at cs.york.ac.uk
Tue Nov 1 09:46:54 EST 2005
Thomas Davie <tom.davie at gmail.com> writes:
> Note in the case statement that the variable fv59v12v59v12n is bound
> in the second case, but used in the first... As is the variable
Well, strictly speaking, those variables are used in the case
discriminant, rather than the first case alternative, but your
point stands. The variables are not bound until the pattern-match
that follows evaluation of the discriminant.
i.e. case foo bar of
(R (foo,bar) baz -> ...
As far as I can see, the fault in hat-trans is due to the combination of
a local pattern deconstruction (the pair), with a numeric pattern (0).
> where (0, typ) = Map.findWithDefault (0, TLit x) x table
The numeric pattern is translated to a cguard, but the tuple pattern
is translated to a case. So the numeric pattern cguard tries to use
the value from the tuple case pattern match, whilst itself being the
discriminant of the case.
Olaf's department. :-)
More information about the Hat