[mercury-users] inferred determinism

Michael Day mikeday at bigpond.net.au
Tue Feb 26 15:51:23 AEDT 2002


The compiler infers a determinism of nondet for the predicate foo below,
unless the call to `zero' in the first clause is replaced by the literal
value 0. But it's an output argument, so why should it care? (I wasn't 
sure if this should go to mercury-bugs or mercury-features...)


:- pred foo(int, list(T)).
:- mode foo(out, in) is det.

foo(zero, []).
foo(N, [_|Xs]) :- foo(N0, Xs), N = N0+1.

:- func zero = int.

zero = 0.

mercury-users mailing list
post:  mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-users-request at cs.mu.oz.au Message: subscribe

More information about the users mailing list