Я написал программу для сортировки чисел из символов, и она работает, но дает мне адрес памяти в конце списка, который он не пропустил последним. Почему это так?Необязательная переменная в конце списка в 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 'но более значимые имена, такие как' Digit', 'Letter',' Digits', 'Letters',' Rest'. Как только вы поймете, что происходит, вы можете вернуться к «X» и «Y» и т. Д. –