Skip to content

Commit 8be2c78

Browse files
committed
Add monoid instances
1 parent 6caa8e1 commit 8be2c78

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

src/Effect/Uncurried.purs

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@
132132

133133
module Effect.Uncurried where
134134

135+
import Data.Function (($))
136+
import Data.Monoid (class Monoid, class Semigroup, mempty, (<>))
135137
import Effect (Effect)
136138

137139
foreign import data EffectFn1 :: Type -> Type -> Type
@@ -186,3 +188,63 @@ foreign import runEffectFn9 :: forall a b c d e f g h i r.
186188
EffectFn9 a b c d e f g h i r -> a -> b -> c -> d -> e -> f -> g -> h -> i -> Effect r
187189
foreign import runEffectFn10 :: forall a b c d e f g h i j r.
188190
EffectFn10 a b c d e f g h i j r -> a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> Effect r
191+
192+
instance semigroupEffectFn1 :: Semigroup r => Semigroup (EffectFn1 a r) where
193+
append f1 f2 = mkEffectFn1 $ runEffectFn1 f1 <> runEffectFn1 f2
194+
195+
instance semigroupEffectFn2 :: Semigroup r => Semigroup (EffectFn2 a b r) where
196+
append f1 f2 = mkEffectFn2 $ runEffectFn2 f1 <> runEffectFn2 f2
197+
198+
instance semigroupEffectFn3 :: Semigroup r => Semigroup (EffectFn3 a b c r) where
199+
append f1 f2 = mkEffectFn3 $ runEffectFn3 f1 <> runEffectFn3 f2
200+
201+
instance semigroupEffectFn4 :: Semigroup r => Semigroup (EffectFn4 a b c d r) where
202+
append f1 f2 = mkEffectFn4 $ runEffectFn4 f1 <> runEffectFn4 f2
203+
204+
instance semigroupEffectFn5 :: Semigroup r => Semigroup (EffectFn5 a b c d e r) where
205+
append f1 f2 = mkEffectFn5 $ runEffectFn5 f1 <> runEffectFn5 f2
206+
207+
instance semigroupEffectFn6 :: Semigroup r => Semigroup (EffectFn6 a b c d e f r) where
208+
append f1 f2 = mkEffectFn6 $ runEffectFn6 f1 <> runEffectFn6 f2
209+
210+
instance semigroupEffectFn7 :: Semigroup r => Semigroup (EffectFn7 a b c d e f g r) where
211+
append f1 f2 = mkEffectFn7 $ runEffectFn7 f1 <> runEffectFn7 f2
212+
213+
instance semigroupEffectFn8 :: Semigroup r => Semigroup (EffectFn8 a b c d e f g h r) where
214+
append f1 f2 = mkEffectFn8 $ runEffectFn8 f1 <> runEffectFn8 f2
215+
216+
instance semigroupEffectFn9 :: Semigroup r => Semigroup (EffectFn9 a b c d e f g h i r) where
217+
append f1 f2 = mkEffectFn9 $ runEffectFn9 f1 <> runEffectFn9 f2
218+
219+
instance semigroupEffectFn10 :: Semigroup r => Semigroup (EffectFn10 a b c d e f g h i j r) where
220+
append f1 f2 = mkEffectFn10 $ runEffectFn10 f1 <> runEffectFn10 f2
221+
222+
instance monoidEffectFn1 :: Monoid r => Monoid (EffectFn1 a r) where
223+
mempty = mkEffectFn1 mempty
224+
225+
instance monoidEffectFn2 :: Monoid r => Monoid (EffectFn2 a b r) where
226+
mempty = mkEffectFn2 mempty
227+
228+
instance monoidEffectFn3 :: Monoid r => Monoid (EffectFn3 a b c r) where
229+
mempty = mkEffectFn3 mempty
230+
231+
instance monoidEffectFn4 :: Monoid r => Monoid (EffectFn4 a b c d r) where
232+
mempty = mkEffectFn4 mempty
233+
234+
instance monoidEffectFn5 :: Monoid r => Monoid (EffectFn5 a b c d e r) where
235+
mempty = mkEffectFn5 mempty
236+
237+
instance monoidEffectFn6 :: Monoid r => Monoid (EffectFn6 a b c d e f r) where
238+
mempty = mkEffectFn6 mempty
239+
240+
instance monoidEffectFn7 :: Monoid r => Monoid (EffectFn7 a b c d e f g r) where
241+
mempty = mkEffectFn7 mempty
242+
243+
instance monoidEffectFn8 :: Monoid r => Monoid (EffectFn8 a b c d e f g h r) where
244+
mempty = mkEffectFn8 mempty
245+
246+
instance monoidEffectFn9 :: Monoid r => Monoid (EffectFn9 a b c d e f g h i r) where
247+
mempty = mkEffectFn9 mempty
248+
249+
instance monoidEffectFn10 :: Monoid r => Monoid (EffectFn10 a b c d e f g h i j r) where
250+
mempty = mkEffectFn10 mempty

0 commit comments

Comments
 (0)