numeric-prelude-0.1.1: An experimental alternative hierarchy of numeric type classesSource codeContentsIndex
Algebra.Ring
Contents
Class
Complex functions
Properties
Synopsis
class C a => C a where
(*) :: a -> a -> a
one :: a
fromInteger :: Integer -> a
(^) :: a -> Integer -> a
sqr :: C a => a -> a
product :: C a => [a] -> a
product1 :: C a => [a] -> a
scalarProduct :: C a => [a] -> [a] -> a
propAssociative :: (Eq a, C a) => a -> a -> a -> Bool
propLeftDistributive :: (Eq a, C a) => a -> a -> a -> Bool
propRightDistributive :: (Eq a, C a) => a -> a -> a -> Bool
propLeftIdentity :: (Eq a, C a) => a -> Bool
propRightIdentity :: (Eq a, C a) => a -> Bool
propPowerCascade :: (Eq a, C a) => a -> Integer -> Integer -> Property
propPowerProduct :: (Eq a, C a) => a -> Integer -> Integer -> Property
propPowerDistributive :: (Eq a, C a) => Integer -> a -> a -> Property
propCommutative :: (Eq a, C a) => a -> a -> Bool
Class
class C a => C a whereSource

Ring encapsulates the mathematical structure of a (not necessarily commutative) ring, with the laws

  a * (b * c) === (a * b) * c
      one * a === a
      a * one === a
  a * (b + c) === a * b + a * c

Typical examples include integers, polynomials, matrices, and quaternions.

Minimal definition: *, (one or fromInteger)

Methods
(*) :: a -> a -> aSource
one :: aSource
fromInteger :: Integer -> aSource
(^) :: a -> Integer -> aSource

The exponent has fixed type Integer in order to avoid an arbitrarily limitted range of exponents, but to reduce the need for the compiler to guess the type (default type). In practice the exponent is most oftenly fixed, and is most oftenly 2. Fixed exponents can be optimized away and thus the expensive computation of Integers doesn't matter. The previous solution used a Algebra.ToInteger.C constrained type and the exponent was converted to Integer before computation. So the current solution is not less efficient.

A variant of ^ with more flexibility is provided by Algebra.Core.ringPower.

show/hide Instances
C Double
C Float
C Int
C Int8
C Int16
C Int32
C Int64
C Integer
C Word
C Word8
C Word16
C Word32
C Word64
C T
C T
C T
Integral a => C (Ratio a)
(Ord a, C a) => C (T a)
C a => C (T a)
C a => C (T a)
(C a, C a) => C (T a)
C a => C (T a)
C a => C (T a)
C a => C (T a)
C a => C (T a)
(C a, C a) => C (T a)
C a => C (T a)
C a => C (T a)
(C a, C a) => C (T a)
C a => C (T a)
C a => C (T a)
(Eq a, C a) => C (T a)
(Eq a, C a) => C (T a)
C a => C (T a)
(Ord a, C a, C b) => C (T a b)
(IsScalar u, C a) => C (T u a)
C v => C (T a v)
(Ord i, C a) => C (T i a)
C v => C (T a v)
sqr :: C a => a -> aSource
Complex functions
product :: C a => [a] -> aSource
product1 :: C a => [a] -> aSource
scalarProduct :: C a => [a] -> [a] -> aSource
Properties
propAssociative :: (Eq a, C a) => a -> a -> a -> BoolSource
propLeftDistributive :: (Eq a, C a) => a -> a -> a -> BoolSource
propRightDistributive :: (Eq a, C a) => a -> a -> a -> BoolSource
propLeftIdentity :: (Eq a, C a) => a -> BoolSource
propRightIdentity :: (Eq a, C a) => a -> BoolSource
propPowerCascade :: (Eq a, C a) => a -> Integer -> Integer -> PropertySource
propPowerProduct :: (Eq a, C a) => a -> Integer -> Integer -> PropertySource
propPowerDistributive :: (Eq a, C a) => Integer -> a -> a -> PropertySource
propCommutative :: (Eq a, C a) => a -> a -> BoolSource
Commutativity need not be satisfied by all instances of C.
Produced by Haddock version 2.4.2