Prolog:检查某些关键字列表的示例?

时间:2013-04-25 22:42:13

标签: prolog

我正在尝试测试列表是否包含特定关键字。

示例(Java):

if (list.contains(keywordA) || list.contains(keywordB) || list.contains(keywordC))

我尝试过以下变种而没有运气。

变体A:     (成员(X,列表),(X ='男朋友'; X ='女朋友') - >             writeln('让我们谈谈你们的关系。')           ;             writeln('不再!')     )

变式B:

( member(['boyfriend', 'girlfriend'], List)

returns false, on input ['boyfriend','issues']

1 个答案:

答案 0 :(得分:1)

我会这样写:

test(List) :- 
    (member(boyfriend, List) ; member(girlfriend, List)) 
        -> writeln('Let''s talk about your relationships.') 
        ;  writeln('Not again!').

这似乎有效:

?- test([something,to,do,with,my,boyfriend,mmkay,'?']).
Let's talk about your relationships.
true.

?- test([something,to,do,with,my,friend,mmkay,'?']).
Not again!
true.

在不知道代码的其余部分的情况下,您提供的输入,您获得的输出以及您所期望的内容很难提供帮助。

顺便说一下,你不需要引用小写原子。