我想过滤序列表中的列表,使[[a,b,c],[],[d],[e,f]]给出[[a,b,c], [E,F],我的滤波器函数应该忽略长度的元素少于两个, 我尝试是如下的代码,过滤列表序列
omitunwanted([],_) :- [].
omitunwanted([List|L1],[H|T]) :-
( length(List,0)->
omitunwanted(L1,[H|T])
; length(List,1)->
omitunwanted(L1,[H|T])
; append(List,[],H),
omitunwanted(L1,T)
).
它返回输出[[A,b,C],[对于[[a,b,c],[],[d],[e,f]]输入[e,f] | _G1622]。我无法弄清楚我做错了什么
它的作品,你能告诉我什么must_be/2呢? – sand 2014-10-22 08:37:57
在这种情况下,'must_be'确保列表被充分实例化,以便我们可以可靠地决定是否排除它。如果你省略'must_be/2'目标,例如当列表是[X,[a,b,c]]'时,你将做出错误的决定。 – mat 2014-10-22 09:34:18