2017-10-01 6 views
0
mergelist([],[],[]). 
mergelist([X],[],[X]). 
mergelist([],[Y],[Y]). 

J'exécute cette requête ?-mergelist([1],[],[1]). qui retourne trueProlog ne reviendra pas vrai (oui) quand il doit

Mais j'exécuter cette requête ?-mergelist([1,2],[],[1,2]). il retourne faux (non).

Je ne suis pas sûr de ce qui ne va pas.

J'utilise ECLiPSe 6.1

Répondre

3

Prolog ne peut pas correspondre à motif [1,2] avec un de:

  • []
  • [X]

[ X] est spécialement conçu pour correspondre à une liste à un élément.

Essayez ceci:

mergelist(L,[],L) :- is_list(L). 
mergelist([],L,L) :- is_list(L).