[mercury-users] constrained polymorphic mode error

Tom Schrijvers Tom.Schrijvers at cs.kuleuven.ac.be
Sat Aug 10 00:58:26 AEST 2002

Hi again,

Here is another error that puzzles me:

$ mmc cpm_error.m -E
cpm_error.m:031: In clause for `m(in(cpm_error:val_closure(cpm_error:closure_list((X =< ground)))), out(cpm_error:closure_list((X =< ground))))':
cpm_error.m:031:   in argument 1 of call to predicate `cpm_error:eval/2':
cpm_error.m:031:   mode error: variable `CCL' has instantiatedness `cpm_error:val_closure(cpm_error:closure_list((X =< ground)))',
cpm_error.m:031:   expected instantiatedness was `cpm_error:val_closure((V_2 =< ground))'.

$ mmc -v
Mercury Compiler, version rotd-2002-08-05, configured for i686-pc-linux-gnu

As far as I can tell it holds that

  cpm_error:closure_list((X =< ground)) =< ground

so why does the compiler generate this error?


:- module cpm_error.

:- interface.

:- type val_closure(X)
        ---> val_closure(pred(X)).

:- type closure_list(X)
        ---> nil
	;    list(X,val_closure(closure_list(X))).

:- inst val_closure(X)
        == bound( cpm_error__val_closure(pred(out(X)) is det) ).

:- inst closure_list(X)
        == bound( cpm_error__nil
 	        ; cpm_error__list(X,val_closure(closure_list(X)))
:- implementation.

:- pred eval(val_closure(X),X).
:- mode eval(in(val_closure(X =< ground)),out(X =< ground)) is det.
eval(val_closure(P),X) :-

:- pred m(val_closure(closure_list(X)),
:- mode m(in(val_closure(closure_list(X =< ground))),
	  out(closure_list(X =< ground))) is det.
m(CCL,RCL) :-

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