有没有办法巩固事实?

时间:2012-10-24 00:18:25

标签: prolog

有没有办法解决这个问题:

genre(blues).
gere(hiphop).
genre(rock).

这样的事情:

genre(blues;hiphop;rock).

*我知道这不起作用,但确实存在类似的事情。

3 个答案:

答案 0 :(得分:2)

您无法整合事实,但您可以将它们变成一个简单的规则,如下所示:

genre(X) :- member(X, [blues, hiphop, rock]).

member/2built-in list predicate in SWI测试列表会员资格。

答案 1 :(得分:1)

这使您可以在列表的所有元素中应用谓词,并且只有在所有应用程序都成功时才会成功。

test_list( _, [] ).
test_list( F, [H|T] ) :- P =.. [F,H], P, test_list( F, T ).

答案 2 :(得分:0)

您可以使用此语法

genre(X) :- X=blues ; X=hiphop ; X=rock.

但我个人建议会员/ 2路......