[erlang-questions] How to "chain" filters?
Per Melin
per.melin@REDACTED
Tue May 20 12:05:03 CEST 2008
2008/5/20 Steve Davis <steven.charles.davis@REDACTED>:
> check ([H | T], A) ->
> C = [{H, X, H / X} || X <- T, H rem 2 =:= 0, (X + H) rem 3 =:= 0],
> check(T, [C | A]);
> check([], A) -> lists:flatten(lists:reverse(A)).
In the above you iterate over T when H is odd and no cases apply. This
should be more efficient:
check([H | T], A) when H rem 2 =:= 0 ->
C = [{H, X, H / X} || X <- T, (X + H) rem 3 =:= 0],
check(T, [C | A]);
check([_ | T], A) -> check(T, A);
check([], A) -> lists:flatten(lists:reverse(A)).
More information about the erlang-questions
mailing list