commutative-semigroups-0.2.0.1: Commutative semigroups
Safe HaskellSafe-Inferred
LanguageHaskell2010

Numeric.Product.Commutative

Synopsis

Documentation

class Num a => CommutativeProduct a #

Subclass of Num where (*) is commutative.

Num doesn't demand commutative (*), and there are reasonable "real-world" instances with non-commutative multiplication. There is also no canonical subclass in base that would suffice, as both Integral and Floating imply commutative (*) for different reasons.

Two examples of non-commutative (*):

  • Linear.Quaternion.Quaterion from the linear package has a Num instance, and quaternion multiplication is noncommutative.
  • Data.Matrix.Matrix from the matrix package uses (*) for matrix multiplication, which is also non-commutative (on square matrices, which is the only time the question makes sense).

Since: 0.1.0

Instances

Instances details
CommutativeProduct Int16 # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct Int32 # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct Int64 # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct Int8 # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct Word16 # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct Word32 # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct Word64 # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct Word8 # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct Integer # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct Natural # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct Double # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct Float # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct Int # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct Word # 
Instance details

Defined in Numeric.Product.Commutative

(RealFloat a, CommutativeProduct a) => CommutativeProduct (Complex a) # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct a => CommutativeProduct (Max a) # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct a => CommutativeProduct (Min a) # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct a => CommutativeProduct (Identity a) # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct a => CommutativeProduct (Down a) # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct a => CommutativeProduct (Product a) # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct a => CommutativeProduct (Sum a) # 
Instance details

Defined in Numeric.Product.Commutative

(Integral a, CommutativeProduct a) => CommutativeProduct (Ratio a) # 
Instance details

Defined in Numeric.Product.Commutative

(HasResolution a, CommutativeProduct a) => CommutativeProduct (Fixed a) # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct a => CommutativeProduct (Op a b) # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct a => CommutativeProduct (Const a b) # 
Instance details

Defined in Numeric.Product.Commutative

CommutativeProduct (f a) => CommutativeProduct (Alt f a) # 
Instance details

Defined in Numeric.Product.Commutative