{-# LANGUAGE ScopedTypeVariables, PolymorphicComponents #-}
{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-}
-- .$Header$
module Data.Flex.MonadPlus where

class FWMonadPlus (m :: * -> *) r | m -> r

data FWDefaultMonadPlus = FWDefaultMonadPlus

data FWMZero t (m :: * -> *) = FWMZero

newtype WrapMZero m = WrapMZero {unwrapMZero :: forall a. m a}

data FWMPlus t (m :: * -> *) = FWMPlus

newtype WrapMPlus m = WrapMPlus {unwrapMPlus :: forall a. m a -> m a -> m a}

-- vim: expandtab:tabstop=4:shiftwidth=4