2011-03-30 5 views
0

프롤로그 목록에서 이름을 묻는 방법으로 이름을 추가하는 방법을 알아 보려고합니다. 그러나 함수에서 그 목록을 가져 오는 방법을 잘 모르겠습니다. 이 시나리오에서 :프롤로그에 목록에 변수 추가하기

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

누군가 올바른 방향으로 나를 가리킬 수 있습니까?

답변

1
이 같은

아마 뭔가 :

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

사용법 :

?- 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']. 
관련 문제