Io Prolog-检查用户输入

Io Prolog-检查用户输入,io,prolog,Io,Prolog,大家好 我想知道是否有一种简单的方法来检查用户在SWI Prolog中输入的内容。我所做的是: :- read(Term), Term = 'A' -> doSomeStuff, !; (Term = 'B' -> doOtherStuff, !; (Term = 'C' -> doSomething)). 我的目标是在用户键入字符a时执行某个操作,在输入为B时执行另一个操作,依此类推。。。但我的代码似乎不起作用。有人能告诉我我做错了什么吗?如果你在提示符下

大家好

我想知道是否有一种简单的方法来检查用户在SWI Prolog中输入的内容。我所做的是:

:- read(Term),
   Term = 'A' -> doSomeStuff, !;
   (Term = 'B' -> doOtherStuff, !;
   (Term = 'C' -> doSomething)).

我的目标是在用户键入字符a时执行某个操作,在输入为B时执行另一个操作,依此类推。。。但我的代码似乎不起作用。有人能告诉我我做错了什么吗?

如果你在提示符下键入
'A.
,它会工作。

如果你在提示符下键入
'A.
,它会工作。

你的子句中应该有一个头,例如

do :- read(Term),
    (Term = 'A' -> doA, !;
    (Term = 'B' -> doB, !;
    (Term = 'C' -> doC))).

doA :- writeln('DoA').
doB :- writeln('DoB').
doC :- writeln('DoC').
然后,调用
?-do.
,然后键入
'A'

使用简单常量更容易:

do2 :- read(Term),
    (Term = a -> doA, !;
    (Term = b -> doB, !;
    (Term = c -> doC))).

然后,调用
?-do2.
,然后键入
a
你的子句中应该有一个头,例如

do :- read(Term),
    (Term = 'A' -> doA, !;
    (Term = 'B' -> doB, !;
    (Term = 'C' -> doC))).

doA :- writeln('DoA').
doB :- writeln('DoB').
doC :- writeln('DoC').
然后,调用
?-do.
,然后键入
'A'

使用简单常量更容易:

do2 :- read(Term),
    (Term = a -> doA, !;
    (Term = b -> doB, !;
    (Term = c -> doC))).

然后,调用
?-do2.
,然后键入
a

嘿,谢谢,我检查了你的代码,但是当我打电话给do2时。然后输入c。我明白了。符合事实的你知道为什么吗?最外面的括号不见了。我现在添加了它们,它正在工作。哦,是的,我没有注意到。非常感谢。嘿,谢谢。我检查了你的代码,但是当我打电话给do2时。然后输入c。我明白了。符合事实的你知道为什么吗?最外面的括号不见了。我现在添加了它们,它正在工作。哦,是的,我没有注意到。谢谢。