Пролог, как правильно использовать 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