我有这个谓词:
ans(["Hello"],0).
ans(["Hello", "dear", "customer"],0).
ans(["Good","Morning"],0).
ans(["Good", "Afternoon"],0).
ans(["Good", "Night"],0).
answer([], []).
answer([H], List):- findall(ans(X,S), (ans(X,S), member(H, X)), List) , !.
answer([H|T], List):- answer([H], L1), answer([T], L2), append(L1, L2, List).
此谓词接收原子列表,并应返回与给定列表中的原子匹配的结构ans。 例如:answer([“ Hello”],L)L = [ans([“ Hello”],0),ans([“ Hello”,“ dear”,“ customer”],0)] 但这仅适用于第一个原子,我不明白为什么。如果列表中有1个以上的原子,则仅适用于第一个原子。 例如:answer([“ Hi”,“ Hello”],L)L = [],它应返回与上述其他示例相同的输出。
答案 0 :(得分:1)
您是否曾经尝试过在谓词答案的第二个实例中削减开支? (很抱歉在答案部分写了这个,但是我没有足够的业力来评论:/)