25 lines
497 B
Haskell
25 lines
497 B
Haskell
mergefn :: (Maybe a1) -> (Maybe a1) -> Maybe a1
|
|
mergefn a b =
|
|
case a of {
|
|
Just _ -> a;
|
|
Nothing -> b}
|
|
{-
|
|
- *Main> mergefn (Just 3) Nothing
|
|
- Just 3
|
|
- *Main> mergefn Nothing (Just 3)
|
|
- Just 3
|
|
-}
|
|
|
|
merge :: (Functor a2) -> (Applicative a2) -> ((Maybe a1) -> (Maybe a1) ->
|
|
Maybe a1) -> a2 -> a2 -> a2
|
|
merge ftor appl _ a b =
|
|
ap ftor appl (fmap ftor mergefn a) b
|
|
|
|
{-
|
|
mergefn :: (Maybe a1) -> (Maybe a1) -> Maybe a1
|
|
mergefn a b =
|
|
case a of {
|
|
Just _ -> a;
|
|
Nothing -> b}
|
|
-}
|