Skip to content

Commit f934666

Browse files
safarelipaf31
authored andcommitted
Make V Monoid (#12)
* make V Monoid * import abc ordering
1 parent f28f0cd commit f934666

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

bower.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"package.json"
1818
],
1919
"dependencies": {
20-
"purescript-bifunctors": "^3.0.0"
20+
"purescript-bifunctors": "^3.0.0",
21+
"purescript-monoid": "^3.0.0"
2122
}
2223
}

src/Data/Validation/Semigroup.purs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ module Data.Validation.Semigroup
1313

1414
import Prelude
1515

16+
import Control.Apply (lift2)
17+
1618
import Data.Bifunctor (class Bifunctor)
19+
import Data.Monoid (class Monoid, mempty)
1720

1821
-- | The `V` functor, used for applicative validation
1922
-- |
@@ -70,3 +73,9 @@ instance applyV :: (Semigroup err) => Apply (V err) where
7073

7174
instance applicativeV :: (Semigroup err) => Applicative (V err) where
7275
pure = Valid
76+
77+
instance semigroupV :: (Semigroup err, Semigroup a) => Semigroup (V err a) where
78+
append = lift2 append
79+
80+
instance monoidV :: (Semigroup err, Monoid a) => Monoid (V err a) where
81+
mempty = pure mempty

src/Data/Validation/Semiring.purs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@ module Data.Validation.Semiring
1414
import Prelude
1515

1616
import Control.Alt (class Alt)
17+
import Control.Apply (lift2)
1718
import Control.Plus (class Plus)
1819
import Control.Alternative (class Alternative)
1920

2021
import Data.Bifunctor (class Bifunctor)
22+
import Data.Monoid (class Monoid, mempty)
2123

2224
-- | The `V` functor, used for alternative validation
2325
-- |
@@ -77,6 +79,12 @@ instance applyV :: (Semiring err) => Apply (V err) where
7779
instance applicativeV :: (Semiring err) => Applicative (V err) where
7880
pure = Valid
7981

82+
instance semigroupV :: (Semiring err, Semigroup a) => Semigroup (V err a) where
83+
append = lift2 append
84+
85+
instance monoidV :: (Semiring err, Monoid a) => Monoid (V err a) where
86+
mempty = pure mempty
87+
8088
instance altV :: (Semiring err) => Alt (V err) where
8189
alt (Invalid err1) (Invalid err2) = Invalid (err1 + err2)
8290
alt (Invalid _) a = a

0 commit comments

Comments
 (0)