[m-dev.] Suggestion for a new "where" operator

Ralph Becket rafe at cs.mu.OZ.AU
Thu Aug 7 13:42:29 AEST 2003

Peter Moulder, Thursday,  7 August 2003:
> [Interestingly, the two versions of the goal can have different
>  determinisms (or even produce a mode error in the duplicate-where
>  version) if the first p call changes the instantiatedness of X.  E.g. if
>  (p(out) is det) is chosen for the initial p(X) call (i.e. p(free >>
>  ground) is det), then the second p(X) call in the duplicate-where
>  version can resolve to (p(in) is semidet), and the compiler may
>  (over-cautiously) complain that the goal can fail.]

And this, I think, is the show-stopper for the approach where
X = (E where G) is shorthand for (some minor variation of)
(G, X = E) in which G binds variables in E and possibly elsewhere.

The suggestion that (E where G) = apply((func) = E :- G) would cover all
the cases where I have wanted something like where-expressions.

-- Ralph
mercury-developers mailing list
Post messages to:       mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions:          mercury-developers-request at cs.mu.oz.au

More information about the developers mailing list