module Data.Ring.Semi.Near
    ( module Data.Monoid.Multiplicative
    , Seminearring
    ) where

import Data.Monoid.Multiplicative
import Data.FingerTree
import Data.Monoid.FromString
import Data.Monoid.Monad.Identity
import Data.Monoid.Generator
import qualified Data.Sequence as Seq
import Data.Sequence (Seq)

class (MultiplicativeMonoid m, Monoid m) => Seminearring m 
instance Monoid m => Seminearring [m]
instance Monoid m => Seminearring (Seq m)
instance (Measured v m, Monoid m) => Seminearring (FingerTree v m)
instance Seminearring m => Seminearring (Identity m)
instance Seminearring m => Seminearring (FromString m)