[m-dev.] Re: proposal: user-defined equality predicates

Andrew Bromage bromage at cs.mu.oz.au
Fri Jun 27 16:20:55 AEST 1997


G'day.

Fergus Henderson wrote:

> Right.  This problem is the reason why every discussion I've had on
> this topic over the last few years has ended in "oh, well, non-canonical
> types would be nice, but I can't see any way to do them cleanly...".
> 
> The solution to this problem is to make deconstructions cc_multi.
> Any time you attempt to examine the representation, then conceptually
> speaking the implementation non-deterministically picks a representation.
> This ensures that (X = Y) => (p(X) <=> p(Y)).
> 
> <happy smile>

As I pointed out in a message which I just sent off, the current
compiler accepts this:

<<
:- func f(int) = int is cc_multi.

:- func g(int) = int is det.
g(X) = f(X).
>>

Either it doesn't solve the problem or the current determinism
checker is broken.

Cheers,
Andrew Bromage



More information about the developers mailing list