我是初学者。这是一个假设的问题 - 我意识到它没有实际用途。但是我想弄清楚如果收到“否”回报,如何让Prolog表现出一种方式,如果收到“是”,我会想到另一种方式。
我正在尝试编写一个函数gothrough
,它接受一个列表,检查列表的头部是否等于',',如果是,则将其传递给另一个函数{{1} }。 checkit
检查传递的变量是否等于';'。如果是,则返回yes。如果没有,则返回否。我希望checkit
能够理解这个返回值并采取相应的行动。我知道prolog实际上并没有返回值,但我真的不知道如何描述我想要做的事情....
所以到目前为止我有这个:
gothrough
谢谢!
答案 0 :(得分:3)
首先请注意,您checkit/1
的来电方式始终会失败,因为H
已绑定到','
,因此显然无法与';'
统一时间。
现在,关于你的if-then-else问题,请使用->/2控制谓词:
gothrough([H|T]):-
H==',',
(checkit(H) ->
writeln(true_part) ;
writeln(false_part)
).