2011-03-30 4 views
0

J'essaye de trouver comment ajouter un nom à une liste dans Prolog en demandant à l'utilisateur le nom puis en saisissant cette liste à partir de la fonction, mais je ne suis pas sûr du fonctionnement de l'ajout dans ce scénario:Ajouter une variable à la liste dans prolog

test:- 
    addname(Names), 
    write(Names). 

addname(Names):- 
    write('Enter name followed by . (s. to stop)'), 
    read(Name), nl, 
    (Name = 's') -> 
     true; %% exit procedure 
     append(Names, Name, New), 
     addname(Names). 

Est-ce que quelqu'un peut me diriger dans la bonne direction?

Répondre

1

Peut-être quelque chose comme ceci:

get_names(Names) :- 
    writeln('Enter name followed by . (s. to stop)'), 
    read(Name), 
    add_name(Name, Names). 

add_name(s, []) :- !. 

add_name(Name, [Name | Names]) :- 
    get_names(Names). 

Utilisation:

?- get_names(Names). 
Enter name followed by . (s. to stop) 
|: 'John'. 
Enter name followed by . (s. to stop) 
|: 'Mary'. 
Enter name followed by . (s. to stop) 
|: s. 
Names = ['John', 'Mary']. 
Questions connexes