Ant*_*tiz 3 prolog prolog-findall
我想写这个:
paths( Result ) :-
findall( B, f(B) , Result ).
f( B ) :-
f1( B ),
f2( B ).
Run Code Online (Sandbox Code Playgroud)
只有一行.所以基本上是这样的:
paths( Result ) :-
findall( B, f1(B) AND f2(B), Result ).
Run Code Online (Sandbox Code Playgroud)
我不知道如何在目标陈述中表达'AND'.这有可能吗?
只需在括号周围加上括号:
paths(Result) :-
findall(B, (f1(B),f2(B)), Result).
Run Code Online (Sandbox Code Playgroud)
增加: 目标只是子目标的连接(和分离).你可以在某个时刻构造它们,然后传递它们直到它们被调用.如果需要动态构建目标,这非常有用:
Goal = (f1(X), (f2(X) ; f3(X))),
findall(X, Goal, Result),
Run Code Online (Sandbox Code Playgroud)