Map each element of a structure to an action, evaluate these actions
from left to right, and collect the results. For a version that
ignores the results see
traverse_.
Examples
Basic usage:
In the first two examples we show each evaluated action mapping to the
output structure.
>>> traverse Just [1,2,3,4]
Just [1,2,3,4]
>>> traverse id [Right 1, Right 2, Right 3, Right 4]
Right [1,2,3,4]
In the next examples, we show that
Nothing and
Left
values short circuit the created structure.
>>> traverse (const Nothing) [1,2,3,4]
Nothing
>>> traverse (\x -> if odd x then Just x else Nothing) [1,2,3,4]
Nothing
>>> traverse id [Right 1, Right 2, Right 3, Right 4, Left 0]
Left 0