{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# OPTIONS_GHC -Wall #-}
module NumHask.Algebra.Basis
  ( AdditiveBasis(..)
  , AdditiveGroupBasis(..)
  , MultiplicativeBasis(..)
  , MultiplicativeGroupBasis(..)
  ) where
import NumHask.Algebra.Additive
import NumHask.Algebra.Multiplicative
class (Additive a) =>
      AdditiveBasis m a where
  infixl 7 .+.
  (.+.) :: m a -> m a -> m a
class (AdditiveGroup a) =>
      AdditiveGroupBasis m a where
  infixl 6 .-.
  (.-.) :: m a -> m a -> m a
class (Multiplicative a) =>
      MultiplicativeBasis m a where
  infixl 7 .*.
  (.*.) :: m a -> m a -> m a
class (MultiplicativeGroup a) =>
      MultiplicativeGroupBasis m a where
  infixl 7 ./.
  (./.) :: m a -> m a -> m a