[mercury-users] Strange Error Message

Gustavo A. Ospina gos at info.ucl.ac.be
Wed Aug 1 01:16:08 AEST 2001

Thanks to Fergus, effectively the ambiguity problem is in the '!' 
character which was confused with the '!'/0 predicate. I could have used 
the predicate io__write_char instead.

> It's better to use `__' rather than `:' as the module qualifier.
> The plan is to make `.' the module qualifier and `:' the type
> qualifier at some point in the future.

Thanks. I thought ':' was to be the new module qualifier, so I was 
trying to adapt my code to that.

> Just as a point of style, you might find this easier to read:
> print_pred_call(Stream, cut) -->
> 	io__format(Stream, "!", []).
> print_pred_call(Stream, unif(Var, Expr)) -->
> 	io__format(Stream, "%s = %s", [s(Var),
> s(expr_to_string(Expr))]).
> print_pred_call(Stream, pred_call(P, Exprs)) -->
> 	io__format(Stream, "%s(%s)", [s(P), s(exprs_to_string(Exprs)]).

I think this would be closer to my prolog style of coding. When I 
program in Prolog, I write always separate clauses. In Mercury I write 
just a clause with explicit switches instead. I can read both styles.

> and replace print_expr with expr_to_string etc.

That's a good idea, as well as the use of io__format.

> Have you got predicates with any of the same names as your constructors
> (cut, unif, pred_call) in scope?

No, it was my confusion.

Thanks again,

+ Gustavo +
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