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

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

9 Years
Discussion Span
Last Post by sarehu

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.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.