Packages

Traverse is a toolset to walk arbitrary Elixir Datastructures in a functional way.

Current section

Files

Jump to
traverse lib traverse filter.ex
Raw

lib/traverse/filter.ex

defmodule Traverse.Filter do
use Traverse.Types
@doc """
The implementation of `Traverse.filter`.
"""
@spec filter(any, t_simple_filter_fn) :: any
def filter(ds, filter_fn) do
Traverse.mapall(ds, fn ele ->
if filter_fn.(ele), do: ele, else: Traverse.Ignore
end)
end
@doc """
The implementation of `Traverse.filter!`.
"""
@spec filter!(any, t_simple_filter_fn) :: any
def filter!(ds, filter_fn) do
Traverse.mapall(ds, fn ele ->
if Traverse.Fn.complete_with_const(filter_fn, false).(ele), do: ele, else: Traverse.Ignore
end)
end
end