module Data.MonadicStreamFunction.ArrowPlus where import Control.Arrow import Control.Monad import Data.MonadicStreamFunction.Core instance (Monad m, MonadPlus m) => ArrowZero (MStreamF m) where zeroArrow = MStreamF $ const mzero instance (Monad m, MonadPlus m) => ArrowPlus (MStreamF m) where sf1 <+> sf2 = MStreamF $ \a -> unMStreamF sf1 a `mplus` unMStreamF sf2 a