这些谓词在 Prolog 中做什么
What do these predicates do in Prolog
我不明白以下 4 个谓词的具体作用:
predicate1([H1,H2|T1],X) :−
append([H1,H2|T1],[H2,H1|T1],X).
predicate2wrapper(In, Out) :-
predicate2([ ], In, Out).
predicate2(L, [ ], L).
predicate2(A,[H| T], Out) :-
predicate2([H,H|A],T, Out).
predicate3([X,X], [X,X|_]).
predicate3([X,X], [_,H|T]) :−
predicate3([X,X],[H|T]).
predicate4([ ], _) .
predicate4([H|T], L) :−
member(H,L),
predicate4(T,L).
我知道所有这些谓词都将列表作为它们的参数,我也尝试 运行 它们,但我总是收到 Syntax error: operator expected
警告。
谁能帮我理解这些谓词的作用,也许还能帮我解决这个错误?
您是从 pdf 还是 word 文档复制的? :-
中的 -
符号不是减号 - 这是导致错误的原因。重新键入它们以解决问题,然后您可以分析谓词。如何知道看起来相同的字符是否不同?我建议使用 diff 工具(一个比较文件的程序,作为命令行或使用 gui (winmerge),甚至可用 online) or an ascii to hex converter like this.
示例查询提示您这些谓词的作用:
?- predicate1([1,2,3],L).
?- append([1,2,3],[4,5],L).
?- predicate2wrapper([1,2,3],L).
?- predicate3([c,c],[a,a,b,b]).
?- predicate3([b,b],[a,a,b,b,c,c]).
?- predicate3([X,X],[a,a,c,b,b]).
?- predicate4([a,b],[a,c,b]).
?- predicate4([a,d],[a,c,b]).
?- member(a,[a,c,b]).
?- member(d,[a,c,b]).
我不明白以下 4 个谓词的具体作用:
predicate1([H1,H2|T1],X) :−
append([H1,H2|T1],[H2,H1|T1],X).
predicate2wrapper(In, Out) :-
predicate2([ ], In, Out).
predicate2(L, [ ], L).
predicate2(A,[H| T], Out) :-
predicate2([H,H|A],T, Out).
predicate3([X,X], [X,X|_]).
predicate3([X,X], [_,H|T]) :−
predicate3([X,X],[H|T]).
predicate4([ ], _) .
predicate4([H|T], L) :−
member(H,L),
predicate4(T,L).
我知道所有这些谓词都将列表作为它们的参数,我也尝试 运行 它们,但我总是收到 Syntax error: operator expected
警告。
谁能帮我理解这些谓词的作用,也许还能帮我解决这个错误?
您是从 pdf 还是 word 文档复制的? :-
中的 -
符号不是减号 - 这是导致错误的原因。重新键入它们以解决问题,然后您可以分析谓词。如何知道看起来相同的字符是否不同?我建议使用 diff 工具(一个比较文件的程序,作为命令行或使用 gui (winmerge),甚至可用 online) or an ascii to hex converter like this.
示例查询提示您这些谓词的作用:
?- predicate1([1,2,3],L).
?- append([1,2,3],[4,5],L).
?- predicate2wrapper([1,2,3],L).
?- predicate3([c,c],[a,a,b,b]).
?- predicate3([b,b],[a,a,b,b,c,c]).
?- predicate3([X,X],[a,a,c,b,b]).
?- predicate4([a,b],[a,c,b]).
?- predicate4([a,d],[a,c,b]).
?- member(a,[a,c,b]).
?- member(d,[a,c,b]).