[mercury-users] Hi, and determinism
Fergus Henderson
fjh at cs.mu.OZ.AU
Mon Jan 29 12:00:56 AEDT 2001
On 29-Jan-2001, Thomas Conway <conway at cs.mu.OZ.AU> wrote:
> On Mon, Jan 29, 2001 at 10:08:54AM EST, Dan Sheppard wrote:
> > I try to avoid cascades of semidet predicates for these two reason
> > (which are really a minor recurrance of the prolog "no" problem), I
> > wonder if there's some other way of dealing with them? Perhaps there
> > are programming styles within the existing language I have failed to
> > notice which would help alleviate these problem?
>
> One thing you can do in many cases is make your predicates det and
> return a bool.
Another alternative along these lines is to use functions returning bool.
If the boolean is the only output, then this is a preferable alternative, IMHO.
Instead of
> :- pred has_prop(my_structure, bool).
> :- mode has_prop(in, out) is det.
>
> has_prop(f(...), yes) :-
> ....
write
:- func has_prop(my_structure) = bool.
has_prop(f(...)) = yes :-
...
Note that you don't need to declare the mode or determinism, since for
functions you can just use the default `(in, in, ...) = out is det'.
So this is slightly more concise.
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
| of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.
--------------------------------------------------------------------------
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