Skip to content

Commit e895592

Browse files
committed
Traversable1 instances matching Foldable1 instances
1 parent a1d31b5 commit e895592

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/Data/Semigroup/Traversable.purs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
module Data.Semigroup.Traversable where
22

33
import Prelude
4-
import Data.Traversable (class Traversable)
4+
5+
import Data.Monoid.Dual (Dual(..))
6+
import Data.Monoid.Multiplicative (Multiplicative(..))
57
import Data.Semigroup.Foldable (class Foldable1)
8+
import Data.Traversable (class Traversable)
69

710
-- | `Traversable1` represents data structures with a minimum of one element that can be _traversed_,
811
-- | accumulating results and effects in some `Applicative` functor.
@@ -31,6 +34,14 @@ class (Foldable1 t, Traversable t) <= Traversable1 t where
3134
traverse1 :: forall a b f. Apply f => (a -> f b) -> t a -> f (t b)
3235
sequence1 :: forall b f. Apply f => t (f b) -> f (t b)
3336

37+
instance traversableDual :: Traversable1 Dual where
38+
traverse1 f (Dual x) = Dual <$> f x
39+
sequence1 = sequence1Default
40+
41+
instance traversableMultiplicative :: Traversable1 Multiplicative where
42+
traverse1 f (Multiplicative x) = Multiplicative <$> f x
43+
sequence1 = sequence1Default
44+
3445
-- | A default implementation of `traverse1` using `sequence1`.
3546
traverse1Default
3647
:: forall t a b m

0 commit comments

Comments
 (0)