module Math.Monad (
(?+?)
, (?+)
, (+?)
, (?-?)
, (?-)
, (-?)
, (?*?)
, (?*)
, (*?)
, (?/?)
, (?/)
, (/?)
) where
import Control.Monad (liftM, liftM2)
(?+?) :: (Monad m, Num a) => m a -> m a -> m a
(?+?) = liftM2 (+)
(?+) :: (Monad m, Num a) => m a -> a -> m a
(?+) = flip (+?)
(+?) :: (Monad m, Num a) => a -> m a -> m a
(+?) = liftM . (+)
(?-?) :: (Monad m, Num a) => m a -> m a -> m a
(?-?) = liftM2 ()
(?-) :: (Monad m, Num a) => m a -> a -> m a
(?-) = flip (+?)
(-?) :: (Monad m, Num a) => a -> m a -> m a
(-?) = liftM . ()
(?*?) :: (Monad m, Num a) => m a -> m a -> m a
(?*?) = liftM2 (*)
(?*) :: (Monad m, Num a) => m a -> a -> m a
(?*) = flip (*?)
(*?) :: (Monad m, Num a) => a -> m a -> m a
(*?) = liftM . (*)
(?/?) :: (Monad m, Fractional a) => m a -> m a -> m a
(?/?) = liftM2 (/)
(?/) :: (Monad m, Fractional a) => m a -> a -> m a
(?/) = flip (/?)
(/?) :: (Monad m, Fractional a) => a -> m a -> m a
(/?) = liftM . (/)