@@ -14,13 +14,18 @@ import Data.Bitraversable (class Bitraversable)
14
14
import Data.Distributive (class Distributive , collectDefault )
15
15
import Data.Eq (class Eq1 )
16
16
import Data.Foldable (class Foldable , foldMap )
17
+ import Data.FoldableWithIndex (class FoldableWithIndex )
17
18
import Data.Functor.Invariant (class Invariant , imapF )
19
+ import Data.FunctorWithIndex (class FunctorWithIndex )
18
20
import Data.HeytingAlgebra (implies , ff , tt )
19
21
import Data.Maybe (Maybe (..))
20
22
import Data.Maybe.First (First (..))
21
23
import Data.Newtype (unwrap )
22
24
import Data.Ord (class Ord1 )
25
+ import Data.Semigroup.Foldable (class Foldable1 )
26
+ import Data.Semigroup.Traversable (class Traversable1 )
23
27
import Data.Traversable (class Traversable )
28
+ import Data.TraversableWithIndex (class TraversableWithIndex )
24
29
import Type.Equality (class TypeEquals , from )
25
30
26
31
-- | A simple product type for wrapping a pair of component values.
@@ -93,6 +98,9 @@ instance booleanAlgebraTuple :: (BooleanAlgebra a, BooleanAlgebra b) => BooleanA
93
98
-- | ````
94
99
derive instance functorTuple :: Functor (Tuple a )
95
100
101
+ instance functorWithIndexTuple :: FunctorWithIndex Unit (Tuple a ) where
102
+ mapWithIndex f = map $ f unit
103
+
96
104
instance invariantTuple :: Invariant (Tuple a ) where
97
105
imap = imapF
98
106
@@ -137,6 +145,15 @@ instance foldableTuple :: Foldable (Tuple a) where
137
145
foldl f z (Tuple _ x) = f z x
138
146
foldMap f (Tuple _ x) = f x
139
147
148
+ instance foldable1Tuple :: Foldable1 (Tuple a ) where
149
+ foldMap1 f (Tuple _ x) = f x
150
+ fold1 (Tuple _ x) = x
151
+
152
+ instance foldableWithIndexTuple :: FoldableWithIndex Unit (Tuple a ) where
153
+ foldrWithIndex f z (Tuple _ x) = f unit x z
154
+ foldlWithIndex f z (Tuple _ x) = f unit z x
155
+ foldMapWithIndex f (Tuple _ x) = f unit x
156
+
140
157
instance bifoldableTuple :: Bifoldable Tuple where
141
158
bifoldMap f g (Tuple a b) = f a <> g b
142
159
bifoldr f g z (Tuple a b) = f a (g b z)
@@ -146,6 +163,13 @@ instance traversableTuple :: Traversable (Tuple a) where
146
163
traverse f (Tuple x y) = Tuple x <$> f y
147
164
sequence (Tuple x y) = Tuple x <$> y
148
165
166
+ instance traversable1Tuple :: Traversable1 (Tuple a ) where
167
+ traverse1 f (Tuple x y) = Tuple x <$> f y
168
+ sequence1 (Tuple x y) = Tuple x <$> y
169
+
170
+ instance traversableWithIndexTuple :: TraversableWithIndex Unit (Tuple a ) where
171
+ traverseWithIndex f (Tuple x y) = Tuple x <$> f unit y
172
+
149
173
instance bitraversableTuple :: Bitraversable Tuple where
150
174
bitraverse f g (Tuple a b) = Tuple <$> f a <*> g b
151
175
bisequence (Tuple a b) = Tuple <$> a <*> b
0 commit comments