[m-rev.] for review: don't allow nondefault mode functions in terms

Mark Brown mark at mercurylang.org
Sun Nov 1 14:36:03 AEDT 2015

On Sun, Nov 1, 2015 at 11:20 AM, Zoltan Somogyi
<zoltan.somogyi at runbox.com> wrote:
> On Sun, 1 Nov 2015 11:15:06 +1100, Peter Wang <novalazy at gmail.com> wrote:
>> Isn't it strange if an instantiatedness tree `I' has all nodes bound
>> but I \=< ground?

The ordering here is in part an information theoretic one, but the
instantiatedness tree, at least as described in the ref man, doesn't
include all the relevant information.

> A big part of the problem is that "ground" can mean several things,
> closely related but subtly different. You cannot solve this problem
> without making the differences explicit, preferably in terminology
> as well as in code.

That's exactly what was wrong with the diff I tried yesterday. :-(

I am now in the process of adding a separate test predicate named
inst_matches_ground_none, which will be like inst_is_ground but with
the change posted previously. Likewise for some other test predicates
in inst_match. Then I'll scour the call graph of
inst_matches_{initial,final} and make sure that the new tests are used
by these, and not by any other parts of the compiler. As I said, I
haven't reached my pain threshold yet.

Can anyone suggest better names than
inst_matches_{ground,ground_or_any,unique,...}_none? The "none" is
referring to the lack of ho_inst_info.


More information about the reviews mailing list