我在理解以下序言谓词时遇到了一些麻烦,我可以理解它连接了一些字符,也产生了可能的列表(第一个和第二个目标),但我不明白它是如何做到的?它是如何执行的?
domains
i=integer
l=i*
slist=string*
clist=char*
predicates
nondeterm conc(clist,clist,clist).
clauses
conc([],L,L).
conc([H|L1],L2,[H|L3]):-
conc(L1,L2,L3).
第一个目标
goal
conc(['a','b'],['c','d'],L).
result
L=['a','b','c','d']
第二个目标
goal
conc(L1,L2,['a','b','c']).
result
L1=[], L2=['a','b','c']
L1=['a'], L2=['b','c']
L1=['a','b'], L2=['c']
L1=['a','b','c'], L2=[]
4 Solutions