module Data.OpenApi.Compare.Common ( zipAll, ) where zipAll :: [a] -> [b] -> Maybe [(a, b)] zipAll :: [a] -> [b] -> Maybe [(a, b)] zipAll [] [] = [(a, b)] -> Maybe [(a, b)] forall a. a -> Maybe a Just [] zipAll (a x : [a] xs) (b y : [b] ys) = ((a x, b y) (a, b) -> [(a, b)] -> [(a, b)] forall a. a -> [a] -> [a] :) ([(a, b)] -> [(a, b)]) -> Maybe [(a, b)] -> Maybe [(a, b)] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [a] -> [b] -> Maybe [(a, b)] forall a b. [a] -> [b] -> Maybe [(a, b)] zipAll [a] xs [b] ys zipAll (a _ : [a] _) [] = Maybe [(a, b)] forall a. Maybe a Nothing zipAll [] (b _ : [b] _) = Maybe [(a, b)] forall a. Maybe a Nothing