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

10 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.