diff --git a/src/Data/Maybe/Local.hs b/src/Data/Maybe/Local.hs new file mode 100644 index 0000000..c361164 --- /dev/null +++ b/src/Data/Maybe/Local.hs @@ -0,0 +1,29 @@ +{- This file is part of Vervis. + - + - Written in 2016 by fr33domlover . + - + - ♡ Copying is an act of love. Please copy, reuse and share. + - + - The author(s) have dedicated all copyright and related and neighboring + - rights to this software to the public domain worldwide. This software is + - distributed without any warranty. + - + - You should have received a copy of the CC0 Public Domain Dedication along + - with this software. If not, see + - . + -} + +module Data.Maybe.Local + ( partitionMaybePairs + ) +where + +import Prelude + +partitionMaybePairs :: [(Maybe a, Maybe b)] -> ([a], [b], [(a, b)]) +partitionMaybePairs = foldr f ([], [], []) + where + f (Nothing, Nothing) ls = ls + f (Just x, Nothing) (xs, ys, ps) = (x : xs, ys, ps) + f (Nothing, Just y) (xs, ys, ps) = (xs, y : ys, ps) + f (Just x, Just y) (xs, ys, ps) = (xs, ys, (x, y) : ps)