在prolog中将变量添加到列表中

时间:2011-03-30 19:51:18

标签: list variables io prolog add

我正在尝试通过提示用户输入名称然后从该函数中获取该列表来确定如何在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).

有人能指出我正确的方向吗?

1 个答案:

答案 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'].