有没有办法扭转这个:
genre(blues).
gere(hiphop).
genre(rock).
变成这样:
genre(blues;hiphop;rock).
*我知道这不起作用,但确实存在类似的东西。
有没有办法扭转这个:
genre(blues).
gere(hiphop).
genre(rock).
变成这样:
genre(blues;hiphop;rock).
*我知道这不起作用,但确实存在类似的东西。
你无法整合事实,但你可以将它们变成一个简单的规则,如下所示:
genre(X) :- member(X, [blues, hiphop, rock]).
member/2
是SWI中用于测试列表成员资格的内置列表谓词。
这使您可以在列表的所有元素上应用谓词,并且只有在所有应用程序都成功时才会成功。
test_list( _, [] ).
test_list( F, [H|T] ) :- P =.. [F,H], P, test_list( F, T ).
你可以使用这个语法
genre(X) :- X=blues ; X=hiphop ; X=rock.
但我个人建议会员/ 2方式...