Hey guys, just starting AI and doing a simple program in prolog. In the
below code (i know its messy etc) but userAns is a dynamic list holding
basically a question, the users responce to that question and whether or
not the user got it right/wrong or skipped it.
But in my 2nd main function (in bold) writeln(userAns), doesn’t work. It
doesn’t seem to recongise userAns as the list. Can anyone help please ?
I assume theres some sort of “out of scope” issue that i’m just not
aware of …
:- dynamic userAns/3.
q('The sky is ? ',['1. brown','2. blue '], 2).
q('sugar is ? ',['1. sour','2. sweet'], 2).
writeln('Answer the following question using the question number or 0 to skip.'),
writeln('Your finished, results are as follows'),
[B]writeln(userAns),[/B] <--Doesn't seem to recongise as the dynamic list.
Please log in or register to post a reply.
Uh, Oh… Been a very long time since I last used Prolog…
Your Problem seems to be that userAns is not a list, it’s a predicate.
The System looks for userAns/0 when you attempt to print it, which
obviously doesn’t exist. You have to iterate over all matches to
userAns/3 and write out those strings.
I couldn’t really find the exact solution yet, since as said, haven’t
used it for quite a while.
Funny, now I am studying lists in prolog. Maybe I can help you in a near
userAns is an atom. userAns(X,Y,Z) is a tuple.
You should do that :
forall(userAns(A,B, C), (write(A), write(' '), write(B), write(' '), writeln(C))),