我是 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-prolog 的函数 atomic_list_concat 来拆分字符串并创建一个可以执行其他所有操作的函数,所以我这样做了:
reduireFosse(E, F) :- atomic_list_concat(F,' ', E), smstofre(F, E).
它只是返回假。
如何使它工作?