好的,我想询问是否有任何方法可以将小写字母更改为大写而不添加“”。对不起,如果这听起来很傻,但我需要这个来运行另一个程序。我写了这样的东西:
change(~A,X):-
upcase_atom(A,D),
X = false-D.
我需要输出看起来像:
X=false-P
但它看起来像这样:
X=false-"P"
我真的很感谢你的帮助!
答案 0 :(得分:0)
注1 :仿函数/谓词不能包含连字符(
-
)。您可以通过使用下划线(_
)来解决问题。节点2 :在此基础上,如果您编写
false_X
,它会将false_X
视为整个原子,因此{{ 1}}不会绑定到声明的X
。注3 :您应该声明
X
运算符,否则Prolog会出错。
根据这两个评论,您可以使用atom_concat/3
轻松解决问题:
~
第一行声明:- op( 1200, fx, [~]).
change(~A,X):-
upcase_atom(A,D),
atom_concat(false_,D,X).
一个运算符,其中一个参数(并且写成~
)优先级为1200.如果有人写入,则查询产生:
f x