>>> 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
>>> traverseBoth (Just . ("Hello " <>)) ("Alice", "Bob") Just ("Hello Alice","Hello Bob") >>> traverseBoth (const Nothing) ("Alice", "Bob") Nothing
>>> traverseToFst (Just . (+1)) 10 Just (11,10) >>> traverseToFst (const Nothing) 10 Nothing
>>> traverseToSnd (Just . (+1)) 10 Just (10,11) >>> traverseToSnd (const Nothing) 10 Nothing
>>> traverse_ print ["Hello", "world", "!"] "Hello" "world" "!"
bitraverse f g ≡ bisequenceA . bimap f gFor a version that ignores the results, see bitraverse_.
>>> bitraverse listToMaybe (find odd) (Left []) Nothing
>>> bitraverse listToMaybe (find odd) (Left [1, 2, 3]) Just (Left 1)
>>> bitraverse listToMaybe (find odd) (Right [4, 5]) Just (Right 5)
>>> bitraverse listToMaybe (find odd) ([1, 2, 3], [4, 5]) Just (1,5)
>>> bitraverse listToMaybe (find odd) ([], [4, 5]) Nothing
>>> bitraverse_ print (print . show) ("Hello", True) "Hello" "True"
>>> bitraverse_ print (print . show) (Right True) "True"
>>> bitraverse_ print (print . show) (Left "Hello") "Hello"