Prolog中空列表的奇偶函数

Prolog中空列表的奇偶函数,prolog,Prolog,我试图在Prolog中创建一个偶数/奇数函数 第一个参数是整数列表,第二个参数是偶数列表,最后一个参数是奇数函数列表 这就是我目前拥有的: even_odd([], [], []). even_odd([H|T], [H|E], O) :- 0 is X mod 2, even_odd(T, E, O). even_odd([H|T], E, [H|O]) :- 1 is X mod 2, even_odd(T, E, O). 这适用于除空([])列表之外的所有

我试图在Prolog中创建一个偶数/奇数函数

第一个参数是整数列表,第二个参数是偶数列表,最后一个参数是奇数函数列表

这就是我目前拥有的:

even_odd([], [], []).
even_odd([H|T], [H|E], O) :-
    0 is X mod 2,
    even_odd(T, E, O).
even_odd([H|T], E, [H|O]) :-
    1 is X mod 2,
    even_odd(T, E, O).
这适用于除空(
[]
)列表之外的所有列表

每当我尝试空列表时,我会得到:

even_odd([], Even, Odd).
Even = Odd, Odd = [].
而不是:

even_odd([], Even, Odd).
Even = [], Odd = [].
有人能帮我吗?多谢各位


编辑:我已经看过了,但它对空列表不起作用。

SWI Prolog的输出是正确的,它只是指出偶数和奇数具有相同的值,即空列表。您的程序是正确的。:)@DanielLyons非常感谢。难道
X
不应该被
H
取代吗?很好的捕获@SamSegers!