module Numeric.Multiplication.Commutative where import Data.Int import Data.Word import Numeric.Semigroup.Multiplicative import Numeric.Natural -- | A commutative multiplicative semigroup class Multiplicative r => Commutative r instance Commutative () instance Commutative Bool instance Commutative Integer instance Commutative Int instance Commutative Int8 instance Commutative Int16 instance Commutative Int32 instance Commutative Int64 instance Commutative Natural instance Commutative Word instance Commutative Word8 instance Commutative Word16 instance Commutative Word32 instance Commutative Word64 instance (Commutative a, Commutative b) => Commutative (a,b) instance (Commutative a, Commutative b, Commutative c) => Commutative (a,b,c) instance (Commutative a, Commutative b, Commutative c, Commutative d) => Commutative (a,b,c,d) instance (Commutative a, Commutative b, Commutative c, Commutative d, Commutative e) => Commutative (a,b,c,d,e)