Skip to content
Sign up for a GitHub account
You can clone with
unionAll :: (Ord a) => [[a]] -> [a]
unionAll xs =
xs' = filter (not.null) xs -- | filter empty lists, if any
if null xs' -- | if nothing is left after filtering
then  -- | return the empty list
else -- | otherwise
next = minimum (map head xs') -- | find the minimum of head elements
-- | they are minimum values in their respective lists
-- | so this is the minimum of every list
xs'' = map (dropWhile (next==)) xs' -- | remove that value from every list
-- | (no need to filter this time, since lists are ordered)
in next : unionAll xs'' -- | recursively call unionAll on xs''
Sign up for free
to join this conversation on GitHub
. Already have an account?
Sign in to comment
Something went wrong with that request. Please try again.