module Control.Ether.Util
( type (++)
, MaybeToList
, fmap
) where
import Prelude hiding (fmap)
#if __GLASGOW_HASKELL__ < 710
import qualified Control.Monad
#else
import qualified Prelude
#endif
type family (as :: [*]) ++ (bs :: [*]) :: [*] where
'[] ++ bs = bs
(a ': as) ++ bs = a ': (as ++ bs)
type family MaybeToList (mt :: Maybe k) :: [k] where
MaybeToList 'Nothing = '[]
MaybeToList ('Just t) = '[t]
#if __GLASGOW_HASKELL__ < 710
fmap :: Monad f => (a -> b) -> f a -> f b
fmap = Control.Monad.liftM
#else
fmap :: Functor f => (a -> b) -> f a -> f b
fmap = Prelude.fmap
#endif