Finding Elements in One Array but Not Another
You want to find elements that are in one list but not another.
You want to find elements in list A that aren't in list B. Erlang provides several ways of doing this:
Use lists:subtract/2 , or the equivalent -- operator.
1> A = lists:seq(1,16). [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] 2> B = lists:seq(2,16,2). [2,4,6,8,10,12,14,16]. 3> lists:subtract(A,B). [1,3,5,7,9,11,13,15] 4> A -- B. [1,3,5,7,9,11,13,15]
Iterate over the two lists
You can iterate over the two lists, and filter out any entries from list A that are also members of list B.
5> lists:foldr(fun(X,Acc) -> Y=lists:member(X, B), 5> if Y -> [X|Acc]; 5> true -> ACC 5> end end, , A). [1,3,5,7,9,11,13,15] 6> lists:filter(fun (X) -> not lists:member(X,B) end, A). [1,3,5,7,9,11,13,15]