zipWithMatched :: (Key -> x -> y -> z) -> SimpleWhenMatched x y z
zipWithMaybeMatched :: (Key -> x -> y -> Maybe z) -> SimpleWhenMatched x y z