次のように目標の lowerpartition/3 を定義しました。
lowerpartition(X,P,Z) :- var(Z),!,lowerpartition(X,P,[]).
lowerpartition([],_,_).
lowerpartition([X|Xs],P,Z) :- X=<P, lowerpartition(Xs,P,[X|Z]).
lowerpartition([X|Xs],P,Z) :- X>P, lowerpartition(Xs,P,Z).
私が電話するとき
lowerpartition([1,2,3,4,5],3,X).
X がリスト [3,2,1] にバインドされることを期待していますが、Prolog は単に false を返します。私は間違って何をしていますか?