我用这种方式定义了(〜)运算符:
:-op(190,fx,~).
我的问题出在查询中:
?- atomic_list_concat(L,',','~t1,tren,casa').
L = ['~t1', tren, casa].
[debug] ?- atomic_list_concat(L,',','~t1,tren,~casa').
L = ['~t1', tren, '~casa'].
如何删除这些" '' "在我定义的运算符的元素中?我需要得到的是
L = [~t1, tren, ~casa]
答案 0 :(得分:0)
要使~t1
不加括号,它应该是一个术语。 atomic_list_concat/2
创建原子列表而不是术语。我们可以通过atom_to_term/3
:
:- op(190, fx, ~).
make_terms([A], [B]):- atom_to_term(A,B,_).
make_terms([A|T], [B|RT]):- atom_to_term(A,B,_), make_terms(T, RT).
最后:
atomic_list_concat(L,',','~a,tren,~casa'), make_terms(L, Z).