Skip to content
This repository was archived by the owner on Oct 4, 2020. It is now read-only.

Commit c2c71ad

Browse files
committed
Merge pull request #13 from purescript/invariant
Add invariant instances
2 parents c950605 + 78acc8a commit c2c71ad

13 files changed

+74
-7
lines changed

bower.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"package.json"
1717
],
1818
"dependencies": {
19-
"purescript-arrays": "~0.4.0"
19+
"purescript-arrays": "~0.4.0",
20+
"purescript-invariant": "~0.1.0"
2021
}
2122
}

docs/Data.Monoid.Additive.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,13 @@ instance comonadAdditive :: Comonad Additive
8686
```
8787

8888

89+
#### `invariantAdditive`
90+
91+
``` purescript
92+
instance invariantAdditive :: Invariant Additive
93+
```
94+
95+
8996
#### `showAdditive`
9097

9198
``` purescript

docs/Data.Monoid.Dual.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,13 @@ instance comonadDual :: Comonad Dual
8686
```
8787

8888

89+
#### `invariantDual`
90+
91+
``` purescript
92+
instance invariantDual :: Invariant Dual
93+
```
94+
95+
8996
#### `showDual`
9097

9198
``` purescript

docs/Data.Monoid.Endo.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ runEndo :: forall a. Endo a -> a -> a
2424
```
2525

2626

27+
#### `invariantEndo`
28+
29+
``` purescript
30+
instance invariantEndo :: Invariant Endo
31+
```
32+
33+
2734
#### `semigroupEndo`
2835

2936
``` purescript

docs/Data.Monoid.First.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,13 @@ instance extendFirst :: Extend First
8181
```
8282

8383

84+
#### `invariantFirst`
85+
86+
``` purescript
87+
instance invariantFirst :: Invariant First
88+
```
89+
90+
8491
#### `showFirst`
8592

8693
``` purescript

docs/Data.Monoid.Last.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,13 @@ instance extendLast :: Extend Last
8181
```
8282

8383

84+
#### `invariantLast`
85+
86+
``` purescript
87+
instance invariantLast :: Invariant Last
88+
```
89+
90+
8491
#### `showLast`
8592

8693
``` purescript

docs/Data.Monoid.Multiplicative.md

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,17 +72,24 @@ instance monadMultiplicative :: Monad Multiplicative
7272
```
7373

7474

75-
#### `extendAdditive`
75+
#### `extendMultiplicative`
7676

7777
``` purescript
78-
instance extendAdditive :: Extend Multiplicative
78+
instance extendMultiplicative :: Extend Multiplicative
7979
```
8080

8181

82-
#### `comonadAdditive`
82+
#### `comonadMultiplicative`
8383

8484
``` purescript
85-
instance comonadAdditive :: Comonad Multiplicative
85+
instance comonadMultiplicative :: Comonad Multiplicative
86+
```
87+
88+
89+
#### `invariantMultiplicative`
90+
91+
``` purescript
92+
instance invariantMultiplicative :: Invariant Multiplicative
8693
```
8794

8895

src/Data/Monoid/Additive.purs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ module Data.Monoid.Additive where
22

33
import Control.Comonad (Comonad)
44
import Control.Extend (Extend)
5+
import Data.Functor.Invariant (Invariant, invmap)
56
import Data.Monoid
67

78
-- | Monoid and semigroup for semirings under addition.
@@ -42,6 +43,9 @@ instance extendAdditive :: Extend Additive where
4243
instance comonadAdditive :: Comonad Additive where
4344
extract = runAdditive
4445

46+
instance invariantAdditive :: Invariant Additive where
47+
invmap f _ (Additive x) = Additive (f x)
48+
4549
instance showAdditive :: (Show a) => Show (Additive a) where
4650
show (Additive a) = "Additive (" ++ show a ++ ")"
4751

src/Data/Monoid/Dual.purs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ module Data.Monoid.Dual where
22

33
import Control.Comonad (Comonad)
44
import Control.Extend (Extend)
5+
import Data.Functor.Invariant (Invariant, invmap)
56
import Data.Monoid
67

78
-- | The dual of a monoid.
@@ -42,6 +43,9 @@ instance extendDual :: Extend Dual where
4243
instance comonadDual :: Comonad Dual where
4344
extract = runDual
4445

46+
instance invariantDual :: Invariant Dual where
47+
invmap f _ (Dual x) = Dual (f x)
48+
4549
instance showDual :: (Show a) => Show (Dual a) where
4650
show (Dual a) = "Dual (" ++ show a ++ ")"
4751

src/Data/Monoid/Endo.purs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
module Data.Monoid.Endo where
22

3+
import Data.Functor.Invariant (Invariant, invmap)
34
import Data.Monoid
45

56
-- | Monoid of endomorphisms under composition.
@@ -14,6 +15,9 @@ newtype Endo a = Endo (a -> a)
1415
runEndo :: forall a. Endo a -> a -> a
1516
runEndo (Endo f) = f
1617

18+
instance invariantEndo :: Invariant Endo where
19+
invmap ab ba (Endo f) = Endo (ab <<< f <<< ba)
20+
1721
instance semigroupEndo :: Semigroup (Endo a) where
1822
(<>) (Endo f) (Endo g) = Endo (f <<< g)
1923

0 commit comments

Comments
 (0)