【发布时间】:2019-11-15 18:49:57
【问题描述】:
我有这个谓词:
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).
这个谓词接收一个原子列表,并且应该返回与给定列表中的原子匹配的结构。 例如: answer(["Hello"],L) L = [ans(["Hello"], 0), ans(["Hello", "dear", "customer"], 0)] 但它只适用于第一个原子,我不明白为什么。如果列表有超过 1 个原子,则它仅适用于第一个原子。 例如: answer(["Hi", "Hello"], L) L = [] 它应该返回与上面另一个示例相同的输出。
【问题讨论】: