prolog,如何正确使用转义序列

prolog,如何正确使用转义序列,prolog,yap,Prolog,Yap,我需要(对于设计选择)获得一份尊重以下模式的列表: Uses = ['foo\/1', 'foobar\/2']. 我能建立起 姓名/号码模式 做: 其中,rule是一个内部事实,Ux是一个列表 我可以使用“/”快捷方式轻松地避开斜杠,但是在引号之间加上(p/A)怎么办 你怎么知道的?请帮帮我。把它们放在3个顶点之间: ?- A=foo, B=1, writeln('''A/B'''). 'A/B' A = foo, B = 1 如果您想获得'foo/1',可以很容易地使用原子列表\u co

我需要(对于设计选择)获得一份尊重以下模式的列表:

Uses = ['foo\/1', 'foobar\/2'].
我能建立起 姓名/号码模式 做:

其中,rule是一个内部事实,Ux是一个列表

我可以使用“/”快捷方式轻松地避开斜杠,但是在引号之间加上(p/A)怎么办


你怎么知道的?请帮帮我。

把它们放在3个顶点之间:

?- A=foo, B=1, writeln('''A/B''').
'A/B'
A = foo,
B = 1

如果您想获得
'foo/1'
,可以很容易地使用
原子列表\u concat/2
谓词,如下所示:

Functor=foo,
Arity=1,
atomic_list_concat([Functor, '/', Arity], Output).

通过这种方式,
Output
变量将绑定到
'foo/1'
术语。

如果我理解正确,如果您停止转义,只使用
p/A
,那么您将得到类似
Uses=[foo/1,foobar/2]
的内容,而不使用引号或转义符。但这取决于
规则为
Ux
生成的内容。
Ux
的元素也需要是
blah/3
格式(无引号或转义符)。
?-全部(P\/A,成员(P/A,[x,x/y,y]),L)。L=[x\/y]
我认为您不应该使用原子(即引用的表达式)。Uses的用途是什么?Uses将包含X的主体,它是一个谓词。由于序列化要求(JSON),Uses的每个成员都应该与JSON术语兼容,因此放在引号之间。
Functor=foo,
Arity=1,
atomic_list_concat([Functor, '/', Arity], Output).