algebra 0.9.0.3 → 2.0
raw patch · 23 files changed
+119/−223 lines, 23 filesdep ~basedep ~containersdep ~keysPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base, containers, keys, semigroupoids, semigroups, tagged, void
API changes (from Hackage documentation)
- Numeric.Additive.Class: replicate1p :: (Additive r, Whole n) => n -> r -> r
- Numeric.Additive.Class: replicate1pIdempotent :: Natural -> r -> r
- Numeric.Algebra: replicate :: (Monoidal m, Whole n) => n -> m -> m
- Numeric.Algebra: replicate1p :: (Additive r, Whole n) => n -> r -> r
- Numeric.Algebra: replicate1pIdempotent :: Natural -> r -> r
- Numeric.Algebra: replicate1pRep :: (Whole n, Functor m, Additive r) => n -> m r -> m r
- Numeric.Algebra: replicateIdempotent :: (Integral n, Idempotent r, Monoidal r) => n -> r -> r
- Numeric.Algebra: replicateRep :: (Whole n, Functor m, Monoidal r) => n -> m r -> m r
- Numeric.Algebra.Class: replicate :: (Monoidal m, Whole n) => n -> m -> m
- Numeric.Algebra.Class: replicateIdempotent :: (Integral n, Idempotent r, Monoidal r) => n -> r -> r
- Numeric.Module.Representable: replicate1pRep :: (Whole n, Functor m, Additive r) => n -> m r -> m r
- Numeric.Module.Representable: replicateRep :: (Whole n, Functor m, Monoidal r) => n -> m r -> m r
- Numeric.Natural: class Integral n => Whole n
- Numeric.Natural: data Natural
- Numeric.Natural: toNatural :: Whole n => n -> Natural
- Numeric.Natural.Internal: Natural :: Integer -> Natural
- Numeric.Natural.Internal: class Integral n => Whole n
- Numeric.Natural.Internal: instance Bits Natural
- Numeric.Natural.Internal: instance Enum Natural
- Numeric.Natural.Internal: instance Eq Natural
- Numeric.Natural.Internal: instance Integral Natural
- Numeric.Natural.Internal: instance Ix Natural
- Numeric.Natural.Internal: instance Num Natural
- Numeric.Natural.Internal: instance Ord Natural
- Numeric.Natural.Internal: instance Read Natural
- Numeric.Natural.Internal: instance Real Natural
- Numeric.Natural.Internal: instance Show Natural
- Numeric.Natural.Internal: instance Whole Natural
- Numeric.Natural.Internal: instance Whole Word
- Numeric.Natural.Internal: instance Whole Word16
- Numeric.Natural.Internal: instance Whole Word32
- Numeric.Natural.Internal: instance Whole Word64
- Numeric.Natural.Internal: instance Whole Word8
- Numeric.Natural.Internal: newtype Natural
- Numeric.Natural.Internal: runNatural :: Natural -> Integer
- Numeric.Natural.Internal: toNatural :: Whole n => n -> Natural
- Numeric.Natural.Internal: unsafePred :: Whole n => n -> n
+ Numeric.Additive.Class: sinnum1p :: (Additive r, Whole n) => n -> r -> r
+ Numeric.Additive.Class: sinnum1pIdempotent :: Natural -> r -> r
+ Numeric.Algebra: sinnum :: (Monoidal m, Whole n) => n -> m -> m
+ Numeric.Algebra: sinnum1p :: (Additive r, Whole n) => n -> r -> r
+ Numeric.Algebra: sinnum1pIdempotent :: Natural -> r -> r
+ Numeric.Algebra: sinnum1pRep :: (Whole n, Functor m, Additive r) => n -> m r -> m r
+ Numeric.Algebra: sinnumIdempotent :: (Integral n, Idempotent r, Monoidal r) => n -> r -> r
+ Numeric.Algebra: sinnumRep :: (Whole n, Functor m, Monoidal r) => n -> m r -> m r
+ Numeric.Algebra.Class: sinnum :: (Monoidal m, Whole n) => n -> m -> m
+ Numeric.Algebra.Class: sinnumIdempotent :: (Integral n, Idempotent r, Monoidal r) => n -> r -> r
+ Numeric.Module.Representable: sinnum1pRep :: (Whole n, Functor m, Additive r) => n -> m r -> m r
+ Numeric.Module.Representable: sinnumRep :: (Whole n, Functor m, Monoidal r) => n -> m r -> m r
- Numeric.Algebra: data Natural
+ Numeric.Algebra: data Natural :: *
Files
- Numeric/Additive/Class.hs +29/−29
- Numeric/Algebra.hs +4/−4
- Numeric/Algebra/Class.hs +29/−29
- Numeric/Algebra/Complex.hs +2/−2
- Numeric/Algebra/Dual.hs +2/−2
- Numeric/Algebra/Hyperbolic.hs +2/−2
- Numeric/Algebra/Quaternion.hs +2/−2
- Numeric/Coalgebra/Dual.hs +2/−2
- Numeric/Coalgebra/Hyperbolic.hs +2/−2
- Numeric/Coalgebra/Quaternion.hs +2/−2
- Numeric/Coalgebra/Trigonometric.hs +2/−2
- Numeric/Covector.hs +2/−2
- Numeric/Exp.hs +2/−2
- Numeric/Log.hs +2/−2
- Numeric/Map.hs +2/−2
- Numeric/Module/Representable.hs +8/−8
- Numeric/Natural.hs +0/−6
- Numeric/Natural/Internal.hs +0/−96
- Numeric/Rig/Class.hs +1/−1
- Numeric/Ring/Opposite.hs +2/−2
- Numeric/Ring/Rng.hs +4/−4
- Numeric/Rng/Zero.hs +3/−3
- algebra.cabal +15/−17
Numeric/Additive/Class.hs view
@@ -8,7 +8,7 @@ , Abelian -- * Additive Monoids , Idempotent- , replicate1pIdempotent+ , sinnum1pIdempotent -- * Partitionable semigroups , Partitionable(..) ) where@@ -29,15 +29,15 @@ -- | -- > (a + b) + c = a + (b + c)--- > replicate 1 a = a--- > replicate (2 * n) a = replicate n a + replicate n a--- > replicate (2 * n + 1) a = replicate n a + replicate n a + a+-- > sinnum 1 a = a+-- > sinnum (2 * n) a = sinnum n a + sinnum n a+-- > sinnum (2 * n + 1) a = sinnum n a + sinnum n a + a class Additive r where (+) :: r -> r -> r - -- | replicate1p n r = replicate (1 + n) r- replicate1p :: Whole n => n -> r -> r- replicate1p y0 x0 = f x0 (1 Prelude.+ y0)+ -- | sinnum1p n r = sinnum (1 + n) r+ sinnum1p :: Whole n => n -> r -> r+ sinnum1p y0 x0 = f x0 (1 Prelude.+ y0) where f x y | even y = f (x + x) (y `quot` 2)@@ -58,86 +58,86 @@ instance Additive r => Additive (b -> r) where f + g = \e -> f e + g e - replicate1p n f e = replicate1p n (f e)+ sinnum1p n f e = sinnum1p n (f e) sumWith1 f xs e = sumWith1 (`f` e) xs instance (HasTrie b, Additive r) => Additive (b :->: r) where (+) = zipWith (+)- replicate1p = fmap . replicate1p+ sinnum1p = fmap . sinnum1p sumWith1 f xs = tabulate $ \e -> sumWith1 (\a -> index (f a) e) xs instance Additive Bool where (+) = (||)- replicate1p _ a = a+ sinnum1p _ a = a instance Additive Natural where (+) = (Prelude.+)- replicate1p n r = (1 Prelude.+ toNatural n) * r+ sinnum1p n r = (1 Prelude.+ toNatural n) * r instance Additive Integer where (+) = (Prelude.+)- replicate1p n r = (1 Prelude.+ toInteger n) * r+ sinnum1p n r = (1 Prelude.+ toInteger n) * r instance Additive Int where (+) = (Prelude.+)- replicate1p n r = fromIntegral (1 Prelude.+ n) * r+ sinnum1p n r = fromIntegral (1 Prelude.+ n) * r instance Additive Int8 where (+) = (Prelude.+)- replicate1p n r = fromIntegral (1 Prelude.+ n) * r+ sinnum1p n r = fromIntegral (1 Prelude.+ n) * r instance Additive Int16 where (+) = (Prelude.+)- replicate1p n r = fromIntegral (1 Prelude.+ n) * r+ sinnum1p n r = fromIntegral (1 Prelude.+ n) * r instance Additive Int32 where (+) = (Prelude.+)- replicate1p n r = fromIntegral (1 Prelude.+ n) * r+ sinnum1p n r = fromIntegral (1 Prelude.+ n) * r instance Additive Int64 where (+) = (Prelude.+)- replicate1p n r = fromIntegral (1 Prelude.+ n) * r+ sinnum1p n r = fromIntegral (1 Prelude.+ n) * r instance Additive Word where (+) = (Prelude.+)- replicate1p n r = fromIntegral (1 Prelude.+ n) * r+ sinnum1p n r = fromIntegral (1 Prelude.+ n) * r instance Additive Word8 where (+) = (Prelude.+)- replicate1p n r = fromIntegral (1 Prelude.+ n) * r+ sinnum1p n r = fromIntegral (1 Prelude.+ n) * r instance Additive Word16 where (+) = (Prelude.+)- replicate1p n r = fromIntegral (1 Prelude.+ n) * r+ sinnum1p n r = fromIntegral (1 Prelude.+ n) * r instance Additive Word32 where (+) = (Prelude.+)- replicate1p n r = fromIntegral (1 Prelude.+ n) * r+ sinnum1p n r = fromIntegral (1 Prelude.+ n) * r instance Additive Word64 where (+) = (Prelude.+)- replicate1p n r = fromIntegral (1 Prelude.+ n) * r+ sinnum1p n r = fromIntegral (1 Prelude.+ n) * r instance Additive () where _ + _ = ()- replicate1p _ _ = () + sinnum1p _ _ = () sumWith1 _ _ = () instance (Additive a, Additive b) => Additive (a,b) where (a,b) + (i,j) = (a + i, b + j)- replicate1p n (a,b) = (replicate1p n a, replicate1p n b)+ sinnum1p n (a,b) = (sinnum1p n a, sinnum1p n b) instance (Additive a, Additive b, Additive c) => Additive (a,b,c) where (a,b,c) + (i,j,k) = (a + i, b + j, c + k)- replicate1p n (a,b,c) = (replicate1p n a, replicate1p n b, replicate1p n c)+ sinnum1p n (a,b,c) = (sinnum1p n a, sinnum1p n b, sinnum1p n c) instance (Additive a, Additive b, Additive c, Additive d) => Additive (a,b,c,d) where (a,b,c,d) + (i,j,k,l) = (a + i, b + j, c + k, d + l)- replicate1p n (a,b,c,d) = (replicate1p n a, replicate1p n b, replicate1p n c, replicate1p n d)+ sinnum1p n (a,b,c,d) = (sinnum1p n a, sinnum1p n b, sinnum1p n c, sinnum1p n d) instance (Additive a, Additive b, Additive c, Additive d, Additive e) => Additive (a,b,c,d,e) where (a,b,c,d,e) + (i,j,k,l,m) = (a + i, b + j, c + k, d + l, e + m)- replicate1p n (a,b,c,d,e) = (replicate1p n a, replicate1p n b, replicate1p n c, replicate1p n d, replicate1p n e)+ sinnum1p n (a,b,c,d,e) = (sinnum1p n a, sinnum1p n b, sinnum1p n c, sinnum1p n d, sinnum1p n e) concat :: NonEmpty (NonEmpty a) -> NonEmpty a@@ -212,8 +212,8 @@ -- class Additive r => Idempotent r -replicate1pIdempotent :: Natural -> r -> r-replicate1pIdempotent _ r = r+sinnum1pIdempotent :: Natural -> r -> r+sinnum1pIdempotent _ r = r instance Idempotent () instance Idempotent Bool
Numeric/Algebra.hs view
@@ -9,8 +9,8 @@ , Abelian -- ** additive idempotent semigroups , Idempotent- , replicate1pIdempotent- , replicateIdempotent+ , sinnum1pIdempotent+ , sinnumIdempotent -- ** partitionable additive semigroups , Partitionable(..) -- ** additive monoids@@ -108,9 +108,9 @@ , Whole(toNatural) -- * Representable Additive- , addRep, replicate1pRep+ , addRep, sinnum1pRep -- * Representable Monoidal- , zeroRep, replicateRep+ , zeroRep, sinnumRep -- * Representable Group , negateRep, minusRep, subtractRep, timesRep -- * Representable Multiplicative (via Algebra)
Numeric/Algebra/Class.hs view
@@ -14,7 +14,7 @@ -- * Additive Monoids , Monoidal(..) , sum- , replicateIdempotent+ , sinnumIdempotent -- * Associative algebras , Algebra(..) -- * Coassociative coalgebras@@ -32,7 +32,7 @@ import Data.Map (Map) import Data.Monoid (mappend) -- import Data.Semigroup.Foldable-import Data.Sequence hiding (reverse,replicate,index)+import Data.Sequence hiding (reverse,index) import Data.Set (Set) import Data.Word import Numeric.Additive.Class@@ -490,9 +490,9 @@ class (LeftModule Natural m, RightModule Natural m) => Monoidal m where zero :: m - replicate :: Whole n => n -> m -> m- replicate 0 _ = zero- replicate n x0 = f x0 n+ sinnum :: Whole n => n -> m -> m+ sinnum 0 _ = zero+ sinnum n x0 = f x0 n where f x y | even y = f (x + x) (y `quot` 2)@@ -509,91 +509,91 @@ sum :: (Foldable f, Monoidal m) => f m -> m sum = sumWith id -replicateIdempotent :: (Integral n, Idempotent r, Monoidal r) => n -> r -> r-replicateIdempotent 0 _ = zero-replicateIdempotent _ x = x+sinnumIdempotent :: (Integral n, Idempotent r, Monoidal r) => n -> r -> r+sinnumIdempotent 0 _ = zero+sinnumIdempotent _ x = x instance Monoidal Bool where zero = False- replicate 0 _ = False- replicate _ r = r+ sinnum 0 _ = False+ sinnum _ r = r instance Monoidal Natural where zero = 0- replicate n r = toNatural n * r+ sinnum n r = toNatural n * r instance Monoidal Integer where zero = 0- replicate n r = toInteger n * r+ sinnum n r = toInteger n * r instance Monoidal Int where zero = 0- replicate n r = fromIntegral n * r+ sinnum n r = fromIntegral n * r instance Monoidal Int8 where zero = 0- replicate n r = fromIntegral n * r+ sinnum n r = fromIntegral n * r instance Monoidal Int16 where zero = 0- replicate n r = fromIntegral n * r+ sinnum n r = fromIntegral n * r instance Monoidal Int32 where zero = 0- replicate n r = fromIntegral n * r+ sinnum n r = fromIntegral n * r instance Monoidal Int64 where zero = 0- replicate n r = fromIntegral n * r+ sinnum n r = fromIntegral n * r instance Monoidal Word where zero = 0- replicate n r = fromIntegral n * r+ sinnum n r = fromIntegral n * r instance Monoidal Word8 where zero = 0- replicate n r = fromIntegral n * r+ sinnum n r = fromIntegral n * r instance Monoidal Word16 where zero = 0- replicate n r = fromIntegral n * r+ sinnum n r = fromIntegral n * r instance Monoidal Word32 where zero = 0- replicate n r = fromIntegral n * r+ sinnum n r = fromIntegral n * r instance Monoidal Word64 where zero = 0- replicate n r = fromIntegral n * r+ sinnum n r = fromIntegral n * r instance Monoidal r => Monoidal (e -> r) where zero = const zero sumWith f xs e = sumWith (`f` e) xs- replicate n r e = replicate n (r e)+ sinnum n r e = sinnum n (r e) instance (HasTrie e, Monoidal r) => Monoidal (e :->: r) where zero = pure zero sumWith f xs = tabulate $ \e -> sumWith (\a -> index (f a) e) xs- replicate n r = tabulate $ replicate n . index r+ sinnum n r = tabulate $ sinnum n . index r instance Monoidal () where zero = ()- replicate _ () = ()+ sinnum _ () = () sumWith _ _ = () instance (Monoidal a, Monoidal b) => Monoidal (a,b) where zero = (zero,zero)- replicate n (a,b) = (replicate n a, replicate n b)+ sinnum n (a,b) = (sinnum n a, sinnum n b) instance (Monoidal a, Monoidal b, Monoidal c) => Monoidal (a,b,c) where zero = (zero,zero,zero)- replicate n (a,b,c) = (replicate n a, replicate n b, replicate n c)+ sinnum n (a,b,c) = (sinnum n a, sinnum n b, sinnum n c) instance (Monoidal a, Monoidal b, Monoidal c, Monoidal d) => Monoidal (a,b,c,d) where zero = (zero,zero,zero,zero)- replicate n (a,b,c,d) = (replicate n a, replicate n b, replicate n c, replicate n d)+ sinnum n (a,b,c,d) = (sinnum n a, sinnum n b, sinnum n c, sinnum n d) instance (Monoidal a, Monoidal b, Monoidal c, Monoidal d, Monoidal e) => Monoidal (a,b,c,d,e) where zero = (zero,zero,zero,zero,zero)- replicate n (a,b,c,d,e) = (replicate n a, replicate n b, replicate n c, replicate n d, replicate n e)+ sinnum n (a,b,c,d,e) = (sinnum n a, sinnum n b, sinnum n c, sinnum n d, sinnum n e)
Numeric/Algebra/Complex.hs view
@@ -150,7 +150,7 @@ instance Additive r => Additive (Complex r) where (+) = addRep - replicate1p = replicate1pRep+ sinnum1p = sinnum1pRep instance LeftModule r s => LeftModule r (Complex s) where r .* Complex a b = Complex (r .* a) (r .* b)@@ -160,7 +160,7 @@ instance Monoidal r => Monoidal (Complex r) where zero = zeroRep- replicate = replicateRep+ sinnum = sinnumRep instance Group r => Group (Complex r) where (-) = minusRep
Numeric/Algebra/Dual.hs view
@@ -129,7 +129,7 @@ instance Additive r => Additive (Dual r) where (+) = addRep - replicate1p = replicate1pRep+ sinnum1p = sinnum1pRep instance LeftModule r s => LeftModule r (Dual s) where r .* Dual a b = Dual (r .* a) (r .* b)@@ -139,7 +139,7 @@ instance Monoidal r => Monoidal (Dual r) where zero = zeroRep- replicate = replicateRep+ sinnum = sinnumRep instance Group r => Group (Dual r) where (-) = minusRep
Numeric/Algebra/Hyperbolic.hs view
@@ -121,7 +121,7 @@ instance Additive r => Additive (Hyper' r) where (+) = addRep - replicate1p = replicate1pRep+ sinnum1p = sinnum1pRep instance LeftModule r s => LeftModule r (Hyper' s) where r .* Hyper' a b = Hyper' (r .* a) (r .* b)@@ -131,7 +131,7 @@ instance Monoidal r => Monoidal (Hyper' r) where zero = zeroRep- replicate = replicateRep+ sinnum = sinnumRep instance Group r => Group (Hyper' r) where (-) = minusRep
Numeric/Algebra/Quaternion.hs view
@@ -180,7 +180,7 @@ instance Additive r => Additive (Quaternion r) where (+) = addRep - replicate1p = replicate1pRep+ sinnum1p = sinnum1pRep instance LeftModule r s => LeftModule r (Quaternion s) where r .* Quaternion a b c d =@@ -192,7 +192,7 @@ instance Monoidal r => Monoidal (Quaternion r) where zero = zeroRep- replicate = replicateRep+ sinnum = sinnumRep instance Group r => Group (Quaternion r) where (-) = minusRep
Numeric/Coalgebra/Dual.hs view
@@ -129,7 +129,7 @@ instance Additive r => Additive (Dual' r) where (+) = addRep - replicate1p = replicate1pRep+ sinnum1p = sinnum1pRep instance LeftModule r s => LeftModule r (Dual' s) where r .* Dual' a b = Dual' (r .* a) (r .* b)@@ -139,7 +139,7 @@ instance Monoidal r => Monoidal (Dual' r) where zero = zeroRep- replicate = replicateRep+ sinnum = sinnumRep instance Group r => Group (Dual' r) where (-) = minusRep
Numeric/Coalgebra/Hyperbolic.hs view
@@ -121,7 +121,7 @@ instance Additive r => Additive (Hyper r) where (+) = addRep - replicate1p = replicate1pRep+ sinnum1p = sinnum1pRep instance LeftModule r s => LeftModule r (Hyper s) where r .* Hyper a b = Hyper (r .* a) (r .* b)@@ -131,7 +131,7 @@ instance Monoidal r => Monoidal (Hyper r) where zero = zeroRep- replicate = replicateRep+ sinnum = sinnumRep instance Group r => Group (Hyper r) where (-) = minusRep
Numeric/Coalgebra/Quaternion.hs view
@@ -180,7 +180,7 @@ instance Additive r => Additive (Quaternion' r) where (+) = addRep - replicate1p = replicate1pRep+ sinnum1p = sinnum1pRep instance LeftModule r s => LeftModule r (Quaternion' s) where r .* Quaternion' a b c d =@@ -192,7 +192,7 @@ instance Monoidal r => Monoidal (Quaternion' r) where zero = zeroRep- replicate = replicateRep+ sinnum = sinnumRep instance Group r => Group (Quaternion' r) where (-) = minusRep
Numeric/Coalgebra/Trigonometric.hs view
@@ -157,7 +157,7 @@ instance Additive r => Additive (Trig r) where (+) = addRep - replicate1p = replicate1pRep+ sinnum1p = sinnum1pRep instance LeftModule r s => LeftModule r (Trig s) where r .* Trig a b = Trig (r .* a) (r .* b)@@ -167,7 +167,7 @@ instance Monoidal r => Monoidal (Trig r) where zero = zeroRep- replicate = replicateRep+ sinnum = sinnumRep instance Group r => Group (Trig r) where (-) = minusRep
Numeric/Covector.hs view
@@ -79,7 +79,7 @@ instance Additive r => Additive (Covector r a) where Covector m + Covector n = Covector $ m + n- replicate1p n (Covector m) = Covector $ replicate1p n m+ sinnum1p n (Covector m) = Covector $ sinnum1p n m instance Coalgebra r m => Multiplicative (Covector r m) where Covector f * Covector g = Covector $ \k -> f (\m -> g (comult k m))@@ -135,7 +135,7 @@ instance Monoidal s => Monoidal (Covector s a) where zero = Covector zero- replicate n (Covector m) = Covector (replicate n m)+ sinnum n (Covector m) = Covector (sinnum n m) instance Abelian s => Abelian (Covector s a)
Numeric/Exp.hs view
@@ -12,11 +12,11 @@ instance Additive r => Multiplicative (Exp r) where Exp a * Exp b = Exp (a + b) productWith1 f = Exp . sumWith1 (runExp . f)- pow1p (Exp m) n = Exp (replicate1p n m)+ pow1p (Exp m) n = Exp (sinnum1p n m) instance Monoidal r => Unital (Exp r) where one = Exp zero- pow (Exp m) n = Exp (replicate n m)+ pow (Exp m) n = Exp (sinnum n m) productWith f = Exp . sumWith (runExp . f) instance Group r => Division (Exp r) where
Numeric/Log.hs view
@@ -13,7 +13,7 @@ instance Multiplicative r => Additive (Log r) where Log a + Log b = Log (a * b) sumWith1 f = Log . productWith1 (runLog . f)- replicate1p n (Log m) = Log (pow1p m n)+ sinnum1p n (Log m) = Log (pow1p m n) instance Unital r => LeftModule Natural (Log r) where n .* Log m = Log (pow m n)@@ -23,7 +23,7 @@ instance Unital r => Monoidal (Log r) where zero = Log one- replicate n (Log m) = Log (pow m n)+ sinnum n (Log m) = Log (pow m n) sumWith f = Log . productWith (runLog . f) instance Division r => LeftModule Integer (Log r) where
Numeric/Map.hs view
@@ -212,7 +212,7 @@ instance Additive r => Additive (Map r b a) where Map m + Map n = Map $ m + n- replicate1p n (Map m) = Map $ replicate1p n m+ sinnum1p n (Map m) = Map $ sinnum1p n m instance Coalgebra r m => Multiplicative (Map r b m) where f * g = Map $ \k b -> (f $# \a -> (g $# comult k a) b) b@@ -247,7 +247,7 @@ instance Monoidal s => Monoidal (Map s b a) where zero = Map zero- replicate n (Map m) = Map $ replicate n m+ sinnum n (Map m) = Map $ sinnum n m instance Abelian s => Abelian (Map s b a)
Numeric/Module/Representable.hs view
@@ -2,9 +2,9 @@ module Numeric.Module.Representable ( -- * Representable Additive- addRep, replicate1pRep+ addRep, sinnum1pRep -- * Representable Monoidal- , zeroRep, replicateRep+ , zeroRep, sinnumRep -- * Representable Group , negateRep, minusRep, subtractRep, timesRep -- * Representable Multiplicative (via Algebra)@@ -35,17 +35,17 @@ addRep :: (Zip m, Additive r) => m r -> m r -> m r addRep = zipWith (+) --- | `Additive.replicate1p` default definition-replicate1pRep :: (Whole n, Functor m, Additive r) => n -> m r -> m r-replicate1pRep = fmap . replicate1p+-- | `Additive.sinnum1p` default definition+sinnum1pRep :: (Whole n, Functor m, Additive r) => n -> m r -> m r+sinnum1pRep = fmap . sinnum1p -- | `Monoidal.zero` default definition zeroRep :: (Applicative m, Monoidal r) => m r zeroRep = pure zero --- | `Monoidal.replicate` default definition-replicateRep :: (Whole n, Functor m, Monoidal r) => n -> m r -> m r-replicateRep = fmap . replicate+-- | `Monoidal.sinnum` default definition+sinnumRep :: (Whole n, Functor m, Monoidal r) => n -> m r -> m r+sinnumRep = fmap . sinnum -- | `Group.negate` default definition negateRep :: (Functor m, Group r) => m r -> m r
− Numeric/Natural.hs
@@ -1,6 +0,0 @@-module Numeric.Natural - ( Natural- , Whole(toNatural)- ) where--import Numeric.Natural.Internal
− Numeric/Natural/Internal.hs
@@ -1,96 +0,0 @@-module Numeric.Natural.Internal- ( Natural(..)- , Whole(..)- ) where--import Data.Word-import Data.Bits-import Text.Read-import Data.Ix--newtype Natural = Natural { runNatural :: Integer } deriving (Eq,Ord,Ix)--instance Show Natural where- showsPrec d (Natural n) = showsPrec d n--instance Read Natural where- readPrec = fmap Natural $ step readPrec--instance Num Natural where- Natural n + Natural m = Natural (n + m)- Natural n * Natural m = Natural (n * m)- Natural n - Natural m | result < 0 = error "Natural.(-): negative result"- | otherwise = Natural result- where result = n - m- abs (Natural n) = Natural n- signum (Natural n) = Natural (signum n)- fromInteger n - | n >= 0 = Natural n- | otherwise = error "Natural.fromInteger: negative"--instance Bits Natural where- Natural n .&. Natural m = Natural (n .&. m)- Natural n .|. Natural m = Natural (n .|. m)- xor (Natural n) (Natural m) = Natural (xor n m)- complement _ = error "Bits.complement: Natural complement undefined"- shift (Natural n) = Natural . shift n- rotate (Natural n) = Natural . rotate n- bit = Natural . bit- setBit (Natural n) = Natural . setBit n- clearBit (Natural n) = Natural . clearBit n- complementBit (Natural n) = Natural . complementBit n- testBit = testBit . runNatural - bitSize = bitSize . runNatural- isSigned _ = False- shiftL (Natural n) = Natural . shiftL n- shiftR (Natural n) = Natural . shiftR n- rotateL (Natural n) = Natural . rotateL n- rotateR (Natural n) = Natural . rotateR n--instance Real Natural where- toRational (Natural a) = toRational a--instance Enum Natural where- pred (Natural 0) = error "Natural.pred: 0"- pred (Natural n) = Natural (pred n)- succ (Natural n) = Natural (succ n)- fromEnum (Natural n) = fromEnum n- toEnum n | n < 0 = error "Natural.toEnum: negative"- | otherwise = Natural (toEnum n)--instance Integral Natural where- quot (Natural a) (Natural b) = Natural (quot a b)- rem (Natural a) (Natural b) = Natural (rem a b)- div (Natural a) (Natural b) = Natural (div a b)- mod (Natural a) (Natural b) = Natural (mod a b)- divMod (Natural a) (Natural b) = (Natural q, Natural r) where (q,r) = divMod a b- quotRem (Natural a) (Natural b) = (Natural q, Natural r) where (q,r) = quotRem a b- toInteger = runNatural--class Integral n => Whole n where- toNatural :: n -> Natural- unsafePred :: n -> n--instance Whole Word where- toNatural = Natural . toInteger- unsafePred n = n - 1--instance Whole Word8 where- toNatural = Natural . toInteger- unsafePred n = n - 1--instance Whole Word16 where- toNatural = Natural . toInteger- unsafePred n = n - 1--instance Whole Word32 where- toNatural = Natural . toInteger- unsafePred n = n - 1--instance Whole Word64 where- toNatural = Natural . toInteger- unsafePred n = n - 1--instance Whole Natural where- toNatural = id- unsafePred (Natural n) = Natural (n - 1)
Numeric/Rig/Class.hs view
@@ -17,7 +17,7 @@ -- | A Ring without (n)egation class (Semiring r, Unital r, Monoidal r) => Rig r where fromNatural :: Natural -> r- fromNatural n = replicate n one+ fromNatural n = sinnum n one fromWhole :: (Whole n, Rig r) => n -> r fromWhole = fromNatural . toNatural
Numeric/Ring/Opposite.hs view
@@ -32,11 +32,11 @@ traverse1 f (Opposite r) = fmap Opposite (f r) instance Additive r => Additive (Opposite r) where Opposite a + Opposite b = Opposite (a + b)- replicate1p n (Opposite a) = Opposite (replicate1p n a)+ sinnum1p n (Opposite a) = Opposite (sinnum1p n a) sumWith1 f = Opposite . sumWith1 (runOpposite . f) instance Monoidal r => Monoidal (Opposite r) where zero = Opposite zero- replicate n (Opposite a) = Opposite (replicate n a)+ sinnum n (Opposite a) = Opposite (sinnum n a) sumWith f = Opposite . sumWith (runOpposite . f) instance Semiring r => LeftModule (Opposite r) (Opposite r) where (.*) = (*)
Numeric/Ring/Rng.hs view
@@ -17,19 +17,19 @@ instance Abelian r => Additive (RngRing r) where RngRing n a + RngRing m b = RngRing (n + m) (a + b)- replicate1p n (RngRing m a) = RngRing ((1 + toInteger n) * m) (replicate1p n a)+ sinnum1p n (RngRing m a) = RngRing ((1 + toInteger n) * m) (sinnum1p n a) instance Abelian r => Abelian (RngRing r) instance (Abelian r, Monoidal r) => LeftModule Natural (RngRing r) where- n .* RngRing m a = RngRing (toInteger n * m) (replicate n a)+ n .* RngRing m a = RngRing (toInteger n * m) (sinnum n a) instance (Abelian r, Monoidal r) => RightModule Natural (RngRing r) where- RngRing m a *. n = RngRing (toInteger n * m) (replicate n a)+ RngRing m a *. n = RngRing (toInteger n * m) (sinnum n a) instance (Abelian r, Monoidal r) => Monoidal (RngRing r) where zero = RngRing 0 zero- replicate n (RngRing m a) = RngRing (toInteger n * m) (replicate n a)+ sinnum n (RngRing m a) = RngRing (toInteger n * m) (sinnum n a) instance (Abelian r, Group r) => LeftModule Integer (RngRing r) where n .* RngRing m a = RngRing (toInteger n * m) (times n a)
Numeric/Rng/Zero.hs view
@@ -27,7 +27,7 @@ instance Monoidal r => Monoidal (ZeroRng r) where zero = ZeroRng zero sumWith f = ZeroRng . sumWith (runZeroRng . f)- replicate n (ZeroRng a) = ZeroRng (replicate n a)+ sinnum n (ZeroRng a) = ZeroRng (sinnum n a) instance Group r => Group (ZeroRng r) where ZeroRng a - ZeroRng b = ZeroRng (a - b)@@ -46,9 +46,9 @@ instance Monoidal r => Commutative (ZeroRng r) instance (Group r, Abelian r) => Rng (ZeroRng r) instance Monoidal r => LeftModule Natural (ZeroRng r) where- (.*) = replicate+ (.*) = sinnum instance Monoidal r => RightModule Natural (ZeroRng r) where- m *. n = replicate n m+ m *. n = sinnum n m instance Group r => LeftModule Integer (ZeroRng r) where (.*) = times instance Group r => RightModule Integer (ZeroRng r) where
algebra.cabal view
@@ -1,6 +1,6 @@ name: algebra category: Math, Algebra-version: 0.9.0.3+version: 2.0 license: BSD3 cabal-version: >= 1.6 license-file: LICENSE@@ -33,20 +33,20 @@ GeneralizedNewtypeDeriving build-depends: - array >= 0.3.0.2 && < 0.4,- base >= 4 && < 4.4,- distributive >= 0.2 && < 0.3,- transformers >= 0.2.0 && < 0.3,- tagged >= 0.2.2 && < 0.3,- categories >= 0.58.0 && < 0.59,- containers >= 0.3.0.0 && < 0.5,- keys >= 1.8 && < 1.9,- mtl >= 2.0 && < 2.1,- semigroups >= 0.6 && < 0.7,- semigroupoids >= 1.2.2 && < 1.3,- representable-functors >= 2.0 && < 2.1,- representable-tries >= 2.0 && < 2.1,- void >= 0.5.4 && < 0.6+ array >= 0.3.0.2 && < 0.4,+ base >= 4 && < 5,+ distributive >= 0.2 && < 0.3,+ transformers >= 0.2.0 && < 0.3,+ tagged >= 0.2.2.3 && < 0.3,+ categories >= 0.58.0 && < 0.59,+ containers >= 0.3 && < 0.5,+ keys >= 2.0 && < 2.1,+ mtl >= 2.0 && < 2.1,+ semigroups >= 0.7.1 && < 0.8,+ semigroupoids >= 1.2.4 && < 1.3,+ representable-functors >= 2.0 && < 2.1,+ representable-tries >= 2.0 && < 2.1,+ void >= 0.5.4.3 && < 0.6 exposed-modules: Numeric.Additive.Class@@ -91,8 +91,6 @@ Numeric.Map Numeric.Module.Class Numeric.Module.Representable- Numeric.Natural- Numeric.Natural.Internal Numeric.Order.Additive Numeric.Order.Class Numeric.Order.LocallyFinite