Skip to content

Commit 6a802df

Browse files
committed
Hackage release 0.0.3
1 parent 6d9267e commit 6a802df

7 files changed

Lines changed: 47 additions & 111 deletions

File tree

rings.cabal

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ extra-source-files: ChangeLog.md
1515
cabal-version: >=1.10
1616

1717
library
18-
1918
hs-source-dirs: src
2019
default-language: Haskell2010
20+
ghc-options: -Wall -optc-std=c99
2121

2222
exposed-modules:
2323
Data.Algebra
@@ -51,7 +51,7 @@ library
5151
, containers >= 0.4.0 && < 0.7
5252
, distributive >= 0.3 && < 1.0
5353
, semigroupoids >= 5.0 && < 6.0
54-
, profunctors
54+
, profunctors >= 5.0 && < 6.0
5555

5656
test-suite test
5757
type: exitcode-stdio-1.0

src/Data/Algebra.hs

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,44 +12,29 @@
1212
{-# LANGUAGE TypeOperators #-}
1313
{-# LANGUAGE TypeFamilies #-}
1414

15-
module Data.Algebra where
16-
{- (
15+
module Data.Algebra (
1716
(><)
1817
, (//)
18+
, (.@.)
1919
, unit
2020
, norm
2121
, conj
22+
, triple
2223
, reciprocal
2324
, Algebra(..)
2425
, Composition(..)
2526
, Unital(..)
2627
, Division(..)
2728
) where
28-
-}
29-
import safe Control.Applicative
29+
3030
import safe Data.Bool
31-
import safe Data.Complex
32-
import safe Data.Distributive
33-
import safe Data.Fixed
34-
import safe Data.Foldable as Foldable (fold, foldl')
35-
import safe Data.Functor.Compose
3631
import safe Data.Functor.Rep
37-
hiding ((//))
38-
import safe Data.Int
3932
import safe Data.Semifield
4033
import safe Data.Semigroup.Additive as A
41-
import safe Data.Semigroup.Foldable as Foldable1
4234
import safe Data.Semigroup.Multiplicative as M
4335
import safe Data.Semimodule
44-
import safe Data.Semiring
45-
import safe Data.Tuple
46-
import safe Data.Word
47-
import safe Foreign.C.Types (CFloat(..),CDouble(..))
48-
import safe GHC.Real hiding (Fractional(..))
49-
import safe Numeric.Natural
36+
import safe Data.Semiring hiding ((//))
5037
import safe Prelude hiding (Num(..), Fractional(..), sum, product)
51-
import safe Test.Logic
52-
import safe qualified Prelude as P
5338

5439
-- | < https://en.wikipedia.org/wiki/Algebra_over_a_field#Generalization:_algebra_over_a_ring Algebra > over a semiring.
5540
--
@@ -122,8 +107,8 @@ class Algebra r a => Composition r a where
122107

123108

124109
-- @ 'conj' a '><' 'conj' b = 'conj' (b >< a) @
125-
prop_conj :: Representable f => Foldable f => Semiring b => Composition a (Rep f) => Rel a b -> f a -> f a -> b
126-
prop_conj (~~) p q = sum $ mzipWithRep (~~) (conj (p >< q)) (conj q >< conj p)
110+
--prop_conj :: Representable f => Foldable f => Semiring b => Composition a (Rep f) => Rel a b -> f a -> f a -> b
111+
--prop_conj (~~) p q = sum $ mzipWithRep (~~) (conj (p >< q)) (conj q >< conj p)
127112

128113
-- @ 'conj' a '><' 'conj' b = 'conj' (b >< a) @
129114
conj :: Representable f => Composition r (Rep f) => f r -> f r
@@ -139,8 +124,8 @@ conj = tabulate . conjugateWith . index
139124
norm :: (Representable f, Composition r (Rep f)) => f r -> r
140125
norm x = normWith $ index x
141126

142-
norm' :: (Representable f, Composition r (Rep f)) => f r -> f r
143-
norm' x = x >< conj x
127+
--norm' :: (Representable f, Composition r (Rep f)) => f r -> f r
128+
--norm' x = x >< conj x
144129

145130
class (Semiring r, Algebra r a) => Unital r a where
146131
unitWith :: r -> a -> r

src/Data/Algebra/Quaternion.hs

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,15 @@ module Data.Algebra.Quaternion where
1616

1717
import safe Data.Algebra
1818
import safe Data.Distributive
19-
import safe Data.Semifield
20-
import safe Data.Functor.Rep
2119
import safe Data.Fixed
22-
20+
import safe Data.Functor.Rep
21+
import safe Data.Semifield
22+
import safe Data.Semigroup.Foldable
2323
import safe Data.Semimodule
2424
import safe Data.Semimodule.Vector
25-
import safe Data.Semimodule.Matrix
26-
import safe Data.Semimodule.Transform
2725
import safe Data.Semiring
28-
import safe Data.Semigroup.Foldable
29-
import safe Data.Semigroup.Additive
30-
import safe Data.Semigroup.Multiplicative
3126
import safe GHC.Generics hiding (Rep)
32-
33-
import safe Prelude (fromInteger, fromRational)
34-
import Prelude hiding (Num(..), Fractional(..), sum, product)
35-
import safe qualified Prelude as N
36-
37-
import safe Test.Logic
38-
39-
import GHC.Real hiding (Fractional(..))
27+
import safe Prelude hiding (Num(..), Fractional(..), sum, product)
4028

4129
{- need tolerances:
4230
λ> prop_conj q12 (q3 :: QuatP)

src/Data/Semimodule/Matrix.hs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,20 +64,16 @@ module Data.Semimodule.Matrix (
6464

6565
import safe Data.Bool
6666
import safe Data.Distributive
67-
import safe Data.Foldable as Foldable (fold, foldl')
6867
import safe Data.Functor.Compose
6968
import safe Data.Functor.Rep
70-
71-
import safe Data.Semigroup.Foldable as Foldable1
69+
import safe Data.Semifield
7270
import safe Data.Semigroup.Additive
7371
import safe Data.Semigroup.Multiplicative
74-
import safe Data.Semiring
75-
import safe Data.Semifield
7672
import safe Data.Semimodule
77-
import safe Data.Semimodule.Vector
7873
import safe Data.Semimodule.Transform
74+
import safe Data.Semimodule.Vector
75+
import safe Data.Semiring
7976
import safe Data.Tuple
80-
8177
import safe Prelude hiding (Num(..), Fractional(..), sum, negate)
8278

8379

src/Data/Semimodule/Transform.hs

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,32 +16,17 @@
1616

1717
module Data.Semimodule.Transform where
1818

19-
import safe Control.Applicative
2019
import safe Control.Category (Category, (>>>))
21-
import safe Data.Algebra
22-
import safe Data.Bool
23-
import safe Data.Distributive
24-
import safe Data.Foldable as Foldable (fold, foldl')
25-
import safe Data.Functor.Rep
2620
import safe Data.Functor.Compose
2721
import safe Data.Functor.Product
28-
22+
import safe Data.Functor.Rep
2923
import safe Data.Profunctor
30-
import safe Data.Semifield
31-
import safe Data.Semigroup.Foldable as Foldable1
3224
import safe Data.Semimodule
33-
import safe Data.Semimodule.Vector
34-
import safe Data.Semiring
35-
import safe Prelude hiding (Num(..), Fractional(..), negate, sum, product)
36-
import safe qualified Prelude as P
37-
3825
import safe Data.Tuple (swap)
26+
import safe Prelude hiding (Num(..), Fractional(..), negate, sum, product)
3927
import safe Test.Logic
40-
import qualified Data.Bifunctor as B
41-
import qualified Control.Category as C
42-
43-
import safe Prelude (fromInteger, fromRational)
44-
28+
import safe qualified Control.Category as C
29+
import safe qualified Data.Bifunctor as B
4530

4631
{-
4732
app' = app @I3 @V3 @I3 @V3 @Int

src/Data/Semimodule/Vector.hs

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,15 @@ module Data.Semimodule.Vector (
2828
) where
2929

3030
import safe Control.Applicative
31-
import safe Control.Category (Category, (>>>))
3231
import safe Data.Algebra
3332
import safe Data.Bool
3433
import safe Data.Distributive
35-
import safe Data.Foldable as Foldable (fold, foldl')
3634
import safe Data.Functor.Rep
37-
38-
import safe Data.Profunctor
3935
import safe Data.Semifield
4036
import safe Data.Semigroup.Foldable as Foldable1
4137
import safe Data.Semimodule
4238
import safe Data.Semiring
4339
import safe Prelude hiding (Num(..), Fractional(..), negate, sum, product)
44-
import safe qualified Prelude as P
45-
46-
4740

4841
-------------------------------------------------------------------------------
4942
-- V2
@@ -167,9 +160,9 @@ instance Semiring r => Algebra r I2 where
167160
instance Semiring r => Composition r I2 where
168161
conjugateWith = id
169162

170-
normWith f = flip multiplyWith I21 $ \i1 i2 ->
171-
flip multiplyWith I22 $ \j1 j2 ->
172-
f i1 * f i2 + f j1 * f j2
163+
normWith f = flip multiplyWith I21 $ \ix1 ix2 ->
164+
flip multiplyWith I22 $ \jx1 jx2 ->
165+
f ix1 * f ix2 + f jx1 * f jx2
173166

174167
-------------------------------------------------------------------------------
175168
-- V3
@@ -300,19 +293,19 @@ instance Ring r => Algebra r I3 where
300293
instance Ring r => Composition r I3 where
301294
conjugateWith = id
302295

303-
normWith f = flip multiplyWith' I31 $ \i1 i2 ->
304-
flip multiplyWith' I32 $ \j1 j2 ->
305-
flip multiplyWith' I33 $ \k1 k2 ->
306-
f i1 * f i2 + f j1 * f j2 + f k1 * f k2
296+
normWith f = flip multiplyWith' I31 $ \ix1 ix2 ->
297+
flip multiplyWith' I32 $ \jx1 jx2 ->
298+
flip multiplyWith' I33 $ \kx1 kx2 ->
299+
f ix1 * f ix2 + f jx1 * f jx2 + f kx1 * f kx2
307300

308301
where
309-
multiplyWith' f = f' where
310-
i31 = f I31 I31
311-
i32 = f I32 I32
312-
i33 = f I33 I33
313-
f' I31 = i31
314-
f' I32 = i32
315-
f' I33 = i33
302+
multiplyWith' f1 = f1' where
303+
i31 = f1 I31 I31
304+
i32 = f1 I32 I32
305+
i33 = f1 I33 I33
306+
f1' I31 = i31
307+
f1' I32 = i32
308+
f1' I33 = i33
316309

317310

318311
-------------------------------------------------------------------------------
@@ -346,7 +339,7 @@ instance Ring r => Composition r QuaternionBasis where
346339
f' I32 = negate . f $ Just I32
347340
f' I33 = negate . f $ Just I33
348341

349-
normWith f = flip multiplyWith zero $ \i1 i2 -> f i1 * conjugateWith f i2
342+
normWith f = flip multiplyWith zero $ \ix1 ix2 -> f ix1 * conjugateWith f ix2
350343

351344
instance Field r => Division r QuaternionBasis where
352345
reciprocalWith f i = conjugateWith f i / normWith f

src/Data/Semiring.hs

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -31,40 +31,29 @@ module Data.Semiring (
3131
) where
3232

3333
import safe Control.Applicative
34-
import safe Control.Category ((>>>))
3534
import safe Data.Bool
36-
import safe Data.Ord
3735
import safe Data.Complex
38-
import safe Data.Maybe
3936
import safe Data.Either
4037
import safe Data.Fixed
41-
import safe Data.Foldable as Foldable (Foldable, fold, foldr', foldl')
38+
import safe Data.Foldable as Foldable (Foldable, foldr')
39+
import safe Data.Functor.Apply
4240
import safe Data.Group
4341
import safe Data.Int
4442
import safe Data.List.NonEmpty
45-
import safe Data.Semigroup
46-
import safe Data.Semigroup.Foldable as Foldable1
47-
43+
import safe Data.Maybe
4844
import safe Data.Semigroup.Additive as A
45+
import safe Data.Semigroup.Foldable as Foldable1
4946
import safe Data.Semigroup.Multiplicative as M
50-
51-
import safe Data.Functor.Apply
52-
import safe Data.Tuple
5347
import safe Data.Word
48+
import safe Foreign.C.Types (CFloat(..),CDouble(..))
5449
import safe GHC.Real hiding (Fractional(..), (^^), (^))
5550
import safe Numeric.Natural
56-
import safe Foreign.C.Types (CFloat(..),CDouble(..))
57-
58-
import safe Prelude ( Eq(..), Ord(..), Show, Ordering(..), Bounded(..), Applicative(..), Functor(..), Monoid(..), Semigroup(..), id, (.), ($), flip, (<$>), Integer, Float, Double)
51+
import safe Prelude (Ord(..), Applicative(..), Functor(..), Monoid(..), Semigroup(..), id, (.), ($), Integer, Float, Double)
5952
import safe qualified Prelude as P
60-
61-
import GHC.Generics (Generic)
62-
63-
import qualified Data.Map as Map
64-
import qualified Data.Set as Set
65-
import qualified Data.IntMap as IntMap
66-
import qualified Data.IntSet as IntSet
67-
import qualified Data.Sequence as Seq
53+
import safe qualified Data.IntMap as IntMap
54+
import safe qualified Data.IntSet as IntSet
55+
import safe qualified Data.Map as Map
56+
import safe qualified Data.Set as Set
6857

6958
-------------------------------------------------------------------------------
7059
-- Presemiring

0 commit comments

Comments
 (0)