%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Programma per la lettura di una lista di interi:
% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% leggi_lista_int(L): legge da std input una sequenza 
% di numeri terminata da un numero negativo e la 
% memorizza nella lista L.

leggi_lista_int(L) :-
       write('Dai un numero (negativo per smettere)'), nl,
       read(X),
       leggi_lista_int_cont(X,L).

leggi_lista_int_cont(X,[]) :-
       X < 0.
leggi_lista_int_cont(X,L) :-
       X >= 0,
       L = [X|R],
       leggi_lista_int(R).


% Goal d'esempio
%
% ?- leggi_lista_int(L).
% |: 3.
% |: 5.
% |: 1.
% |: 4.
% |: -1.
% L = [3, 5, 1, 4]
