module Pandora.Pattern.Object.Ringoid (Ringoid (..)) where

import Pandora.Pattern.Object.Semigroup (Semigroup)

infixl 7 *

{- |
> When providing a new instance, you should ensure it satisfies the two laws:
> * Left distributivity: x * (y + z) ≡ x * y + x * z
> * Right distributivity: (y + z) * x ≡ y * x + z * x
-}

class Semigroup a => Ringoid a where
	{-# MINIMAL (*) #-}
	(*) :: a -> a -> a