Skip to content

Commit 1ab59e5

Browse files
PureScript 0.11 support and commutativity generalization
Fixes #2
1 parent 2456f64 commit 1ab59e5

2 files changed

Lines changed: 15 additions & 15 deletions

File tree

bower.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717
"package.json"
1818
],
1919
"dependencies": {
20-
"purescript-monoid": "^2.0.0"
20+
"purescript-monoid": "^3.0.0"
2121
},
2222
"devDependencies": {
23-
"purescript-psci-support": "^2.0.0"
23+
"purescript-psci-support": "^3.0.0"
2424
}
2525
}

src/Data/Group.purs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,9 @@
1515
module Data.Group where
1616

1717
import Data.Monoid (class Monoid)
18-
import Data.Monoid.Dual (Dual(..))
19-
import Data.Ring (class Ring, negate)
2018
import Data.Monoid.Additive (Additive(..))
21-
import Data.Unit (Unit, unit)
19+
import Data.Monoid.Dual (Dual(..))
20+
import Prelude
2221

2322
-- | A `Group` is a `Monoid` with inverses. Instances
2423
-- | must satisfy the following law in addition to the monoid laws:
@@ -27,24 +26,25 @@ import Data.Unit (Unit, unit)
2726
class Monoid g <= Group g where
2827
ginverse :: g -> g
2928

30-
-- | A `CommutativeGroup` is a `Group` with a commutative semigroup operation.
31-
-- | Also known as an Abelian group. Instances must satisfy the following law
32-
-- | in addition to the group laws:
29+
-- | A `CommutativeSemigroup` is a `Semigroup` with a commutative operation.
30+
-- | Instances must satisfy the following law in addition to the group laws:
3331
-- |
3432
-- | - Commutativity: `forall x, y. x <> y = y <> x`
35-
class Group g <= CommutativeGroup g
33+
class Semigroup g <= CommutativeSemigroup g
3634

37-
instance unitIsGroup :: Group Unit where
35+
instance groupUnit :: Group Unit where
3836
ginverse _ = unit
3937

40-
instance unitIsCommutativeGroup :: CommutativeGroup Unit
38+
instance commutativeSemigroupUnit :: CommutativeSemigroup Unit
4139

42-
instance dualGroupsAreGroups :: (Group g) => Group (Dual g) where
40+
instance groupDual :: (Group g) => Group (Dual g) where
4341
ginverse (Dual x) = Dual (ginverse x)
4442

45-
instance dualCommutativeGroupsAreCommutativeGroups :: (CommutativeGroup g) => CommutativeGroup (Dual g)
43+
instance commutativeSemigroupDual :: (CommutativeSemigroup g) => CommutativeSemigroup (Dual g)
4644

47-
instance ringsAreAdditiveGroups :: (Ring r) => Group (Additive r) where
45+
instance groupAdditive :: (Ring r) => Group (Additive r) where
4846
ginverse (Additive x) = Additive (negate x)
4947

50-
instance ringsAreCommutativeAdditiveGroups :: (Ring r) => CommutativeGroup (Additive r)
48+
instance commutativeSemigroupAdditive :: (Ring r) => CommutativeSemigroup (Additive r)
49+
50+
type Abelian a b = Group a => CommutativeSemigroup a => b

0 commit comments

Comments
 (0)