表示没有" '' "在使用atomic_list_concat / 3并带有运算符定义的列表中(〜)

时间:2017-05-26 22:00:55

标签: prolog

我用这种方式定义了(〜)运算符:

:-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]

1 个答案:

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