4

有没有办法扭转这个:

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

变成这样:

genre(blues;hiphop;rock).

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

4

3 回答 3

2

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

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

member/2是SWI中用于测试列表成员资格的内置列表谓词。

于 2012-10-24T00:37:25.587 回答
1

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

test_list( _, [] ).
test_list( F, [H|T] ) :- P =.. [F,H], P, test_list( F, T ).
于 2012-10-24T00:30:30.237 回答
0

你可以使用这个语法

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

但我个人建议会员/ 2方式...

于 2012-10-24T13:46:54.847 回答