Пролог, как правильно использовать escape-последовательности

Мне нужно (для выбора дизайна), чтобы получить список, который уважает следующий шаблон:

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

Я могу создать шаблон имени / номера, выполнив:

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

где правило - это внутренний факт, а Ux - список.

Я могу легко избежать косой черты, используя ярлык '/', но как насчет размещения (P/A) между кавычками?

Как это сделать? Помогите мне, пожалуйста.

2 ответа

Решение

Если вы хотите получить 'foo/1', вы можете легко использовать atomic_list_concat/2 предикат следующим образом:

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

В этом случае Output переменная будет связана с 'foo/1' срок.

Просто поместите их между 3 вершинами:

?- A=foo, B=1, writeln('''A/B''').
'A/B'
A = foo,
B = 1
Другие вопросы по тегам