私は次のプロローグ述語を理解するのにいくつかの問題を抱えています、それはいくつかの文字を連結し、可能なリスト(最初と2番目の目標)も生成することを理解できますが、これがどのように行われるのか理解できませんか?どのように実行しますか?
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']
2番目の目標
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