First of all let me apologize for posting in the wrong forum ... but I didn't find one for prolog... please redirect me if we have one ... and anyone's response if he/she knows the answer is appreciated.

am trying to print the elements of a list.... one per line using a predicate of arity 1 .... which I am able to do with the code:

display_list([]) :- !, write('\nThe list is empty').		  % hadles empty list
display_list([H|T]) :- write('        '), write(H), nl, display_list(T).

The problem is: I want to have the sequence number of the list element in front of it: For example,

1 North
2 South
3 East
4 West

I am not able to able to do that.

The code I am writing is:

increment(X,Y) :- Y is X+1.

display_list([])    :- !, write('\nThe list is empty').		  
display_list([H|T]) :- X = 0, increment(X,Y), write(Y),write('        '), write(H), nl, display_list(T).

The output I get as expected is:
11 ?- display_list([north, south, east]).
1 north
1 south
1 east

The list is empty
true.

Also I keep on getting this 'The list is empty' everytime the elements are exhausted and not only when the input list is empty .....

Please advice ...... Thanks

Well, what do you expect? display_list([H|T]) will eventually get to display_list([]).

You should make some predicate display_list_aux that displays nothing when it gets an empty list.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.