Prolog 检查列表中第一项的If-else语句总是返回false?

Prolog 检查列表中第一项的If-else语句总是返回false?,prolog,Prolog,我已经编写了一个方法,它从控制台获取用户输入并将其转换为列表。然后,它进入一个if语句,检查列表的第一个元素(或输入的第一个单词)是否为“A”。如果是,请打印“是”,否则请打印“否”。到目前为止,尽管有用户输入,我只能让它打印“否” start :- read(String), string_to_list(List, String), ( nth0(0,List,'A') -> writeln('Yes') ; writeln('No.

我已经编写了一个方法,它从控制台获取用户输入并将其转换为列表。然后,它进入一个if语句,检查列表的第一个元素(或输入的第一个单词)是否为“A”。如果是,请打印“是”,否则请打印“否”。到目前为止,尽管有用户输入,我只能让它打印“否”

start :-
  read(String),
  string_to_list(List, String),
  (
    nth0(0,List,'A') ->
      writeln('Yes')
    ;
      writeln('No.')
  ).

您似乎正在使用带有交换参数的
string\u to\u list/2
。第一个参数应该是字符串,第二个参数应该是列表。 然后,要检查第一项是否为
'A'
,应使用该字母的代码,而不是atom
'A'
,即
0'A

start:-
  read(String),
  string_to_list(String, List),
  (
    nth0(0,List,0'A) ->
      writeln('Yes')
    ;
      writeln('No.')
  ).
测试:

?- start.
 |: 'ABC'.
 Yes
true.

?- start.
 |: 'BCA'.
 No.
true.