我有一个任务要做一个“简单的”聊天机器人,现在我的主要问题是在一个接收原子列表的谓词中(例如:[“ good”,“ morning”]),并且应该返回一个可能的答案列表在结构中已经定义的谓词还需要过滤关键字,并且仅返回包含给定列表中关键字的答案。
我尝试检查列表中的元素是否已在任何定义的答案中定义。如果是,它将连接到返回列表。 (这个concat谓词是由老师定义的,基本上已经定义了append / 3。)
ans("Hello there",0).
ans("Hello",0).
ans("Hi",0).
ans("Good Morning",0).
ans("Good Afternoon",0).
ans("Good Night",0).
answer([],List).
answer([H|T],List):- ans(H,_),concat(List,H,List),answer([T],List).
当我使用answer([“ good”],List)运行此程序时,它运行到无限(我认为它是一个无限循环,因为它需要很长时间才能运行,并给我一个错误,指出没有剩余空间了在堆栈中) 在这种情况下,输出应为[“早安”,“下午好”,“晚安”]。 感谢您能获得的所有帮助。