>>> sum [1..10] 55
Sum a <> Sum b = Sum (a + b)
>>> Sum 1 <> Sum 2 <> mempty Sum {getSum = 3}
>>> mconcat [ Sum n | n <- [3 .. 9]] Sum {getSum = 42}
>>> asumMap (\x -> if x > 2 then Just x else Nothing) [1..4] Just 3
>>> asum [Just "Hello", Nothing, Just "World"] Just "Hello"
>>> biasum (Nothing, Nothing) Nothing
>>> biasum (Nothing, Just 42) Just 42
>>> biasum (Just 18, Nothing) Just 18
>>> biasum (Just 18, Just 42) Just 18