clash at October 26th, 2006 18:56 — #1
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.
pater at October 27th, 2006 15:28 — #2
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.
devoto at October 27th, 2006 18:05 — #3
Funny, now I am studying lists in prolog. Maybe I can help you in a near future!!!
trap_d at October 29th, 2006 03:57 — #4
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))),