我編寫了一個程序來對符號中的數字進行排序,它能正常工作,但給了我一個列表末尾的內存地址,它並沒有經過最後一次。爲什麼?SWI-Prolog列表末尾沒有實例化的變量
separate([],[],[]).
separate([X],X,_):-number(X).
separate([X],_,X).
separate([X|Y],[X|Z],S):-number(X),separate(Y,Z,S).
separate([X|Y],Z,[X|S]):-separate(Y,Z,S).
當?- separate([3,a,b,4,5,c],X,Y).
諮詢我得到:
X = [3, 4, 5|_G2592],
Y = [a, b, c] .
在看到答案後按下「Enter」鍵,如果按空格鍵會發生什麼情況。請參閱:[爲什麼SWI-Prolog只給我第一個答案?](http://stackoverflow.com/q/34463248/1243762) –
它也有助於在第一次學習Prolog時不使用像'X'和'Y這樣的變量'但更有意義的名稱,如數字,字母,數字,字母,休息。一旦你明白髮生了什麼,那麼你可以回到'X'和'Y'等。 –