read_line_to_codes Prolog swipl奇怪的行为

时间:2018-03-26 13:34:22

标签: input prolog

我想读取用户名并用大写字母显示,我做了类似的事情。

1,1
1,12

我不明白它看起来的问题,比如user_input是empy而没有任何读取执行。

甚至更奇怪这个似乎运作良好......

notice:-
    write('Hi whats ur name?'), nl,
    read_line_to_codes(user_input,Codes1),
    capitalize(Codes1,Codes2)
    ->
    atom_codes(Name,Codes2),
    write(Name).

capitalize([],[]).
capitalize([H1|T], [H2|T]):-
    code_type(H2, to_upper(H1)).

This image describes problem well...

1 个答案:

答案 0 :(得分:0)

您究竟如何运行此代码进行测试?

您的代码的第一个版本在SWI-Prolog shell中可以正常使用:

?- notice.
Hi whats ur name?
|: isabelle
Isabelle
true.

当作为“独立”程序启动时,它也可以正常工作:

$ swipl -s foo.pl -q -t notice
Hi whats ur name?
|: isabelle
Isabelle

(虽然您应该在输出后添加换行符。)