我是Prolog的新手,我对理解它的一些问题有很大的困惑。例如,我有这样的“功能”:使用函数的返回
smstofre([], []).
smstofre([T|R], [X|Y] :- frword(T,X), smstofre(R,Y).
与以下“数据库”:
frword(bjr,bonjour).
这是利用一个写得不好的法文句子翻译成正确的。 我用它这样的:
?- smstofre([bjr],E).
E = [bonjour].
这是很酷,但我想创建一个“功能”,将采取一个简单的字符串,分裂他的字和发回同样的结果有以前的“功能”。 因此,例如:
?- translate('bjr cb ?', E).
应该返回:
E = [bonjour,combien,?].
我试图使用SWI-序言的功能atomic_list_concat分割字符串,并创建一个能够做的一切功能,所以我这样做:
reduireFosse(E, F) :- atomic_list_concat(F,' ', E), smstofre(F, E).
它只是返回false。
如何使它工作?
谢谢!您的reduireFosse版本效果很好,但由于某种原因,您的smstofre版本返回false。所以我保持我的,它的工作很好。 – Maeln