考虑以下列表:
[我的名字是杰克鲍尔]
我想将其统一为以下模式:
[我的,姓名,是,姓名]
这样变量 Name 最后的值就是“jack baur”。该变量在这里用作某种通配符,应该与未知数量的原子/列表成员统一。
重要的:
- 变量/通配符并不总是在最后
- 可能有多个变量/通配符
目前我有这样的事情:
rule([my,name,is,Name],[hello,Name]).
% Sentence is a list (e.g. [my,name,is,jack,baur]
answer(Sentence,Response) :-
rule(Sentence,ResponseList),
atomic_list_concat(ResponseList,' ',Response).
显然,这只适用于Name
恰好是一个词,而不是两个词。
我将如何在 Prolog 中解决这个问题?