我正在尝试通过提示用户输入名称然后从该函数中获取该列表来确定如何在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).
有人能指出我正确的方向吗?
答案 0 :(得分: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'].