Prolog检查函数“返回”否?

时间:2013-02-14 19:16:51

标签: function syntax prolog

我是初学者。这是一个假设的问题 - 我意识到它没有实际用途。但是我想弄清楚如果收到“否”回报,如何让Prolog表现出一种方式,如果收到“是”,我会想到另一种方式。

我正在尝试编写一个函数gothrough,它接受​​一个列表,检查列表的头部是否等于',',如果是,则将其传递给另一个函数{{1} }。 checkit检查传递的变量是否等于';'。如果是,则返回yes。如果没有,则返回否。我希望checkit能够理解这个返回值并采取相应的行动。我知道prolog实际上并没有返回值,但我真的不知道如何描述我想要做的事情.... 所以到目前为止我有这个:

gothrough

谢谢!

1 个答案:

答案 0 :(得分:3)

首先请注意,您checkit/1的来电方式始终会失败,因为H已绑定到',',因此显然无法与';'统一时间。

现在,关于你的if-then-else问题,请使用->/2控制谓词:

gothrough([H|T]):- 
   H==',', 
   (checkit(H) -> 
         writeln(true_part) ; 
         writeln(false_part)
   ).