0

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

Uses = ['foo\/1', 'foobar\/2'].

我能够建立名称/号码模式:

all((P\/A), (rule(X, Ux, _, Module), member(U, Ux), U = (P/A)), Uses).

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

我可以使用“/”快捷方式轻松转义斜线,但是将 (P/A) 放在引号之间呢?

怎么做?请帮我。

4

2 回答 2

0

如果你想得到'foo/1',你可以很容易地使用atomic_list_concat/2谓词如下:

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

这样,Output变量将绑定到'foo/1'术语。

于 2013-06-28T08:56:50.410 回答
0

只需将它们放在 3 个顶点之间:

?- A=foo, B=1, writeln('''A/B''').
'A/B'
A = foo,
B = 1
于 2013-06-28T06:48:07.230 回答