我想過濾序列表中的列表,使[[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