Skip to content

Commit d43d728

Browse files
authored
Merge pull request #3 from i-am-tom/master
Add Monoid instance for Effect
2 parents a152300 + 1a94263 commit d43d728

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
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-prelude": "^3.0.0"
20+
"purescript-prelude": "^3.0.0",
21+
"purescript-monoid": "^3.3.0"
2122
}
2223
}

src/Effect.purs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@ module Effect
44
) where
55

66
import Control.Applicative (class Applicative, liftA1)
7-
import Control.Apply (class Apply)
7+
import Control.Apply (class Apply, lift2)
88
import Control.Bind (class Bind)
99
import Control.Monad (class Monad, ap)
1010

1111
import Data.Functor (class Functor)
12+
import Data.Monoid (class Monoid, mempty)
13+
import Data.Semigroup (class Semigroup, append)
1214
import Data.Unit (Unit)
1315

1416
-- | The `Effect` type constructor is used to represent _native_ effects.
@@ -28,6 +30,12 @@ instance applyEffect :: Apply Effect where
2830
instance applicativeEffect :: Applicative Effect where
2931
pure = pureE
3032

33+
instance semigroupEffect :: Semigroup a => Semigroup (Effect a) where
34+
append = lift2 append
35+
36+
instance monoidEffect :: Monoid a => Monoid (Effect a) where
37+
mempty = pureE mempty
38+
3139
foreign import pureE :: forall a. a -> Effect a
3240

3341
instance bindEffect :: Bind Effect where

0 commit comments

Comments
 (0)