Vigdís — LFE Friday, LiffyBot studying Erlang modules in a Mead-style command room

LFE Friday - lists:filter/2

Heads up: This post was written for LFE 0.9 / Erlang/OTP 17. The current release is LFE 2.2.0. APIs and examples may be outdated.

This week's LFE Friday was translated with permission from the Erlang Thursday series by Steven Proctor. This week's translator: Robert Virding.

Today’s LFE Friday is on lists:filter/2.

lists:filter/2 takes two arguments, a predicate function and a list to iterate over. The return value is a list of items for which the predicate function returns true for that item.

> (lists:filter (lambda (x) (=:= (rem x 2) 1)) '(1 2 3 4 5))
(1 3 5)
> (lists:filter #'erlang:is_atom/1 '(1 a 3 #(a b) World foo))
(a World foo)
> (lists:filter (lambda (x) (> x 0)) '(1 0 -3 foo -13 43))
(1 foo 43)
> (lists:filter (lambda (x) (> x 0)) ())
()
> (lists:filter (lambda (x) 'false) '(1 2 3 4 5))
()
> (lists:filter (lambda (x) 'true) '(1 2 3 4 5)) 
(1 2 3 4 5)

–Proctor, Robert