manifolds-0.2.3.0: Control/Monad/Trans/OuterMaybe.hs
-- |
-- Module : Control.Monad.Trans.OuterMaybe
-- Copyright : (c) Justus Sagemüller 2016
-- License : GPL v3
--
-- Maintainer : (@) sagemueller $ geo.uni-koeln.de
-- Stability : experimental
-- Portability : portable
--
{-# LANGUAGE DeriveFunctor #-}
module Control.Monad.Trans.OuterMaybe where
data OuterMaybeT f a = OuterNothing | OuterJust (f a) deriving (Functor)
instance (Applicative f) => Applicative (OuterMaybeT f) where
pure = OuterJust . pure
OuterJust fs <*> OuterJust xs = OuterJust $ fs <*> xs
_ <*> _ = OuterNothing