Prolog 输出中不需要的逻辑变量

Unwanted logical variable in Prolog output

我必须为大学做 Prolog 作业,我已经基本完成了,但我一直在输出中得到一个 _G 变量。

我们需要将列表 - L - 与常规术语 - K - 进行比较,如果列表中的项目大于该术语,则将其添加到另一个列表 - R-.

这是我的代码

teilliste_grK([],0,[]).
teilliste_grK([],_,[_]).
teilliste_grK([H|T],K,L) :-
   (  H > K
   -> L = [H|R],
      teilliste_grK(T,K,R)
   ;  L = R,
      teilliste_grK(T,K,R)
   ).

?- teilliste_grK([12,4,1,34,5,45],9,R).

它有效,但我得到的不是 R = [12,34,45] R = [12,34,45, _Gxxx]。我只是不知道为什么。

谓词的正确第一个子句是您现在位于顶部的两个子句的组合。

第一个坚持 K 是 0:你不想要这个。第二个坚持在第二个列表的末尾有一个额外的变量:你也不想要这个。

忽略K并关闭列表:

foo([], _, []).