序言翻译大写字母的单词

问题描述 投票:1回答:1

所以这是我当前的代码库结构。

trans([], []).
trans([H|T], [NewH|NewT]):-
             means(H, NewH),
             trans(T,NewT).

means(one, uno) :- !.
means(two, dos) :- !.
means(X, X) :- !.

Question1

这大致符合我想要的方式。例如,如果我输入prolog编译器:

trans([bob,uno,dos],X)。

它将返回:X = [bob,uno,dos]正确,但是如果我插入带有大写字母的参数,例如:

trans([Bob,uno,dos],X)。

出于某种原因,它引发了许多错误。我该如何解决,这样才不会发生?

Question2

[目前,它将答案返回到包含多个单词的列表中,例如(trans([bob,one,two],X)。将返回X = [bob,uno,dos]。

我如何制作它,以便它返回我所连接单词的列表? (例如:X = [bob uno dos])

非常感谢!

prolog predicate swi-prolog logic-programming
1个回答
0
投票

如果在Prolog中某些内容以大写字母开头,则始终将其解释为变量。那只是语法,但是您可以使用字符串。所以

trans(["Bob", "uno", "dos"], X).
© www.soinside.com 2019 - 2024. All rights reserved.