-----------------------------------------------------------------------------
-- |
-- Module      :  Data.Ring
-- Copyright   :  (c) Edward Kmett 2009
-- License     :  BSD-style
-- Maintainer  :  ekmett@gmail.com
-- Stability   :  experimental
-- Portability :  portable (instances use MPTCs)
--
-----------------------------------------------------------------------------

module Data.Ring
    ( module Data.Group
    , module Data.Ring.Semi
    , Ring
    ) where

import Data.Group
import Data.Ring.Semi
import Data.Monoid.Self
import Data.Monoid.FromString

class (Group a, SemiRing a) => Ring a

instance Ring r => Ring (Self r)
instance Ring r => Ring (FromString r)
instance Ring r => Ring (ReducedBy r s)
instance Ring r => Ring (Dual r)