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).