我是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