[mercury-users] About unification and AI
Fergus Henderson
fjh at cs.mu.OZ.AU
Mon Apr 26 05:25:00 AEST 2004
On 24-Apr-2004, Maurizio Colucci <seguso.forever at tin.it> wrote:
> On Friday 23 April 2004 14:25, Maurizio Colucci wrote:
> > > % rule/2
> > > % rule( If, Then).
> > > rule([[A, use, B], [B, isBoomerang]], % Preconditions
> > > [[A, throw, B]]). % Consequences
> >
> > Another thing: the first problem is that I don't know how to define the
> > type for rule/2.
>
> I found the term type in the mercury library, but I am not sure how to write
> the term [A, use, B],
The simplest way would probably be to put the rule definitions in a
separate file, and then use term_io__read_term to read them in.
See samples/interpeter.m for an example.
(If you don't want to use a separate file, another alternative would
be to use a string literal, and then use parser__read_termk_from_string.)
If you want to write it out explicitly, it would look like this:
cons(variable("A"), cons(mkatom("use"), cons(variable("B"),
mkatom("[]"))))
Here I have made use of a couple of helper functions:
:- func cons(term, term) = term.
cons(H,T) = functor(atom("[|]"), context_init, [H,T]).
:- func mkatom(string) = term.
mkatom(A) = functor(atom(A), context_init, []).
> how to unify two terms, and whether the code for
> demon/0 would continue to work. Since the unification used in the prolog code
> seems somewhat "global" (see code).
See samples/interpreter.m for an example of one way to do this sort of thing
in Mercury.
--
Fergus Henderson | "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