This file is indexed.

/usr/share/doc/libghc-lens-doc/html/Control-Lens-Traversal.html is in libghc-lens-doc 4.13-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Control.Lens.Traversal</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Control-Lens-Traversal.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Control-Lens-Traversal.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">lens-4.13: Lenses, Folds and Traversals</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Copyright</th><td>(C) 2012-15 Edward Kmett</td></tr><tr><th>License</th><td>BSD-style (see the file LICENSE)</td></tr><tr><th>Maintainer</th><td>Edward Kmett &lt;ekmett@gmail.com&gt;</td></tr><tr><th>Stability</th><td>provisional</td></tr><tr><th>Portability</th><td>Rank2Types</td></tr><tr><th>Safe Haskell</th><td>Trustworthy</td></tr><tr><th>Language</th><td>Haskell98</td></tr></table><p class="caption">Control.Lens.Traversal</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Traversals</a></li><li><a href="#g:2">Traversing and Lensing</a></li><li><a href="#g:3">Monomorphic Traversals</a></li><li><a href="#g:4">Parts and Holes</a></li><li><a href="#g:5">Common Traversals</a></li><li><a href="#g:6">Indexed Traversals</a><ul><li><a href="#g:7">Common</a></li><li><a href="#g:8">Combinators</a></li></ul></li><li><a href="#g:9">Reflection</a></li><li><a href="#g:10">Implementation Details</a></li><li><a href="#g:11">Fusion</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>A <code><code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b</code> is a generalization of <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code> from
 <code><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a></code>. It allows you to <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code> over a structure and change out
 its contents with monadic or <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code> side-effects. Starting from</p><pre><code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code> :: (<code><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a></code> t, <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code> f) =&gt; (a -&gt; f b) -&gt; t a -&gt; f (t b)
</pre><p>we monomorphize the contents and result to obtain</p><pre>type <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b = forall f. <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code> f =&gt; (a -&gt; f b) -&gt; s -&gt; f t
</pre><p>While a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> isn't quite a <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code>, it _can_ be used for
 <code><a href="Control-Lens-Getter.html#t:Getting">Getting</a></code> like a <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code>, because given a
 <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:Monoid">Monoid</a></code> <code>m</code>, we have an <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code>
 for <code>(<code><a href="Control-Lens-Getter.html#t:Const">Const</a></code> m)</code>. Everything you know how to do with a <code><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a></code>
 container, you can with with a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code>, and here we provide
 combinators that generalize the usual <code><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a></code> operations.</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">type</span> <a href="#t:Traversal">Traversal</a> s t a b = <span class="keyword">forall</span> f. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f =&gt; (a -&gt; f b) -&gt; s -&gt; f t</li><li class="src short"><span class="keyword">type</span> <a href="#t:Traversal-39-">Traversal'</a> s a = <a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a> s s a a</li><li class="src short"><span class="keyword">type</span> <a href="#t:Traversal1">Traversal1</a> s t a b = <span class="keyword">forall</span> f. <a href="file:///usr/share/doc/libghc-semigroupoids-doc/html/Data-Functor-Apply.html#t:Apply">Apply</a> f =&gt; (a -&gt; f b) -&gt; s -&gt; f t</li><li class="src short"><span class="keyword">type</span> <a href="#t:Traversal1-39-">Traversal1'</a> s a = <a href="Control-Lens-Traversal.html#t:Traversal1">Traversal1</a> s s a a</li><li class="src short"><span class="keyword">type</span> <a href="#t:IndexedTraversal">IndexedTraversal</a> i s t a b = <span class="keyword">forall</span> p f. (<a href="Control-Lens-Internal-Indexed.html#t:Indexable">Indexable</a> i p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f) =&gt; p a (f b) -&gt; s -&gt; f t</li><li class="src short"><span class="keyword">type</span> <a href="#t:IndexedTraversal-39-">IndexedTraversal'</a> i s a = <a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a> i s s a a</li><li class="src short"><span class="keyword">type</span> <a href="#t:IndexedTraversal1">IndexedTraversal1</a> i s t a b = <span class="keyword">forall</span> p f. (<a href="Control-Lens-Internal-Indexed.html#t:Indexable">Indexable</a> i p, <a href="file:///usr/share/doc/libghc-semigroupoids-doc/html/Data-Functor-Apply.html#t:Apply">Apply</a> f) =&gt; p a (f b) -&gt; s -&gt; f t</li><li class="src short"><span class="keyword">type</span> <a href="#t:IndexedTraversal1-39-">IndexedTraversal1'</a> i s a = <a href="Control-Lens-Traversal.html#t:IndexedTraversal1">IndexedTraversal1</a> i s s a a</li><li class="src short"><span class="keyword">type</span> <a href="#t:ATraversal">ATraversal</a> s t a b = <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> (-&gt;) a b) s t a b</li><li class="src short"><span class="keyword">type</span> <a href="#t:ATraversal-39-">ATraversal'</a> s a = <a href="Control-Lens-Traversal.html#t:ATraversal">ATraversal</a> s s a a</li><li class="src short"><span class="keyword">type</span> <a href="#t:ATraversal1">ATraversal1</a> s t a b = <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a> (-&gt;) a b) s t a b</li><li class="src short"><span class="keyword">type</span> <a href="#t:ATraversal1-39-">ATraversal1'</a> s a = <a href="Control-Lens-Traversal.html#t:ATraversal1">ATraversal1</a> s s a a</li><li class="src short"><span class="keyword">type</span> <a href="#t:AnIndexedTraversal">AnIndexedTraversal</a> i s t a b = <a href="Control-Lens-Type.html#t:Over">Over</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) a b) s t a b</li><li class="src short"><span class="keyword">type</span> <a href="#t:AnIndexedTraversal-39-">AnIndexedTraversal'</a> i s a = <a href="Control-Lens-Traversal.html#t:AnIndexedTraversal">AnIndexedTraversal</a> i s s a a</li><li class="src short"><span class="keyword">type</span> <a href="#t:AnIndexedTraversal1">AnIndexedTraversal1</a> i s t a b = <a href="Control-Lens-Type.html#t:Over">Over</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) (<a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) a b) s t a b</li><li class="src short"><span class="keyword">type</span> <a href="#t:AnIndexedTraversal1-39-">AnIndexedTraversal1'</a> i s a = <a href="Control-Lens-Traversal.html#t:AnIndexedTraversal1">AnIndexedTraversal1</a> i s s a a</li><li class="src short"><span class="keyword">type</span> <a href="#t:Traversing">Traversing</a> p f s t a b = <a href="Control-Lens-Type.html#t:Over">Over</a> p (<a href="Control-Lens-Internal-Bazaar.html#t:BazaarT">BazaarT</a> p f a b) s t a b</li><li class="src short"><span class="keyword">type</span> <a href="#t:Traversing-39-">Traversing'</a> p f s a = <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> p f s s a a</li><li class="src short"><span class="keyword">type</span> <a href="#t:Traversing1">Traversing1</a> p f s t a b = <a href="Control-Lens-Type.html#t:Over">Over</a> p (<a href="Control-Lens-Internal-Bazaar.html#t:BazaarT1">BazaarT1</a> p f a b) s t a b</li><li class="src short"><span class="keyword">type</span> <a href="#t:Traversing1-39-">Traversing1'</a> p f s a = <a href="Control-Lens-Traversal.html#t:Traversing1">Traversing1</a> p f s s a a</li><li class="src short"><a href="#v:traverseOf">traverseOf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> f s t a b -&gt; (a -&gt; f b) -&gt; s -&gt; f t</li><li class="src short"><a href="#v:forOf">forOf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> f s t a b -&gt; s -&gt; (a -&gt; f b) -&gt; f t</li><li class="src short"><a href="#v:sequenceAOf">sequenceAOf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> f s t (f b) b -&gt; s -&gt; f t</li><li class="src short"><a href="#v:mapMOf">mapMOf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:WrappedMonad">WrappedMonad</a> m) s t a b -&gt; (a -&gt; m b) -&gt; s -&gt; m t</li><li class="src short"><a href="#v:forMOf">forMOf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:WrappedMonad">WrappedMonad</a> m) s t a b -&gt; s -&gt; (a -&gt; m b) -&gt; m t</li><li class="src short"><a href="#v:sequenceOf">sequenceOf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:WrappedMonad">WrappedMonad</a> m) s t (m b) b -&gt; s -&gt; m t</li><li class="src short"><a href="#v:transposeOf">transposeOf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:ZipList">ZipList</a> s t [a] a -&gt; s -&gt; [t]</li><li class="src short"><a href="#v:mapAccumLOf">mapAccumLOf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-State-Lazy.html#t:State">State</a> acc) s t a b -&gt; (acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t)</li><li class="src short"><a href="#v:mapAccumROf">mapAccumROf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Applicative-Backwards.html#t:Backwards">Backwards</a> (<a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-State-Lazy.html#t:State">State</a> acc)) s t a b -&gt; (acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t)</li><li class="src short"><a href="#v:scanr1Of">scanr1Of</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Applicative-Backwards.html#t:Backwards">Backwards</a> (<a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-State-Lazy.html#t:State">State</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> a))) s t a a -&gt; (a -&gt; a -&gt; a) -&gt; s -&gt; t</li><li class="src short"><a href="#v:scanl1Of">scanl1Of</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-State-Lazy.html#t:State">State</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> a)) s t a a -&gt; (a -&gt; a -&gt; a) -&gt; s -&gt; t</li><li class="src short"><a href="#v:failover">failover</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Alternative">Alternative</a> m =&gt; <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/ghc-prim-0.4.0.0/GHC-Tuple.html#t:-40--44--41-">(,)</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:Any">Any</a>) s t a b -&gt; (a -&gt; b) -&gt; s -&gt; m t</li><li class="src short"><a href="#v:ifailover">ifailover</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Alternative">Alternative</a> m =&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) (<a href="file:///usr/share/doc/ghc-doc/html/libraries/ghc-prim-0.4.0.0/GHC-Tuple.html#t:-40--44--41-">(,)</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:Any">Any</a>) s t a b -&gt; (i -&gt; a -&gt; b) -&gt; s -&gt; m t</li><li class="src short"><a href="#v:cloneTraversal">cloneTraversal</a> :: <a href="Control-Lens-Traversal.html#t:ATraversal">ATraversal</a> s t a b -&gt; <a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a> s t a b</li><li class="src short"><a href="#v:cloneIndexPreservingTraversal">cloneIndexPreservingTraversal</a> :: <a href="Control-Lens-Traversal.html#t:ATraversal">ATraversal</a> s t a b -&gt; <a href="Control-Lens-Type.html#t:IndexPreservingTraversal">IndexPreservingTraversal</a> s t a b</li><li class="src short"><a href="#v:cloneIndexedTraversal">cloneIndexedTraversal</a> :: <a href="Control-Lens-Traversal.html#t:AnIndexedTraversal">AnIndexedTraversal</a> i s t a b -&gt; <a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a> i s t a b</li><li class="src short"><a href="#v:cloneTraversal1">cloneTraversal1</a> :: <a href="Control-Lens-Traversal.html#t:ATraversal1">ATraversal1</a> s t a b -&gt; <a href="Control-Lens-Traversal.html#t:Traversal1">Traversal1</a> s t a b</li><li class="src short"><a href="#v:cloneIndexPreservingTraversal1">cloneIndexPreservingTraversal1</a> :: <a href="Control-Lens-Traversal.html#t:ATraversal1">ATraversal1</a> s t a b -&gt; <a href="Control-Lens-Type.html#t:IndexPreservingTraversal1">IndexPreservingTraversal1</a> s t a b</li><li class="src short"><a href="#v:cloneIndexedTraversal1">cloneIndexedTraversal1</a> :: <a href="Control-Lens-Traversal.html#t:AnIndexedTraversal1">AnIndexedTraversal1</a> i s t a b -&gt; <a href="Control-Lens-Traversal.html#t:IndexedTraversal1">IndexedTraversal1</a> i s t a b</li><li class="src short"><a href="#v:partsOf">partsOf</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> (-&gt;) f s t a a -&gt; <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> f s t [a] [a]</li><li class="src short"><a href="#v:partsOf-39-">partsOf'</a> :: <a href="Control-Lens-Traversal.html#t:ATraversal">ATraversal</a> s t a a -&gt; <a href="Control-Lens-Type.html#t:Lens">Lens</a> s t [a] [a]</li><li class="src short"><a href="#v:unsafePartsOf">unsafePartsOf</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> (-&gt;) f s t a b -&gt; <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> f s t [a] [b]</li><li class="src short"><a href="#v:unsafePartsOf-39-">unsafePartsOf'</a> :: <a href="Control-Lens-Traversal.html#t:ATraversal">ATraversal</a> s t a b -&gt; <a href="Control-Lens-Type.html#t:Lens">Lens</a> s t [a] [b]</li><li class="src short"><a href="#v:holesOf">holesOf</a> :: <span class="keyword">forall</span> p s t a. <a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p =&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> p a a) s t a a -&gt; s -&gt; [<a href="Control-Lens-Internal-Context.html#t:Pretext">Pretext</a> p a a t]</li><li class="src short"><a href="#v:singular">singular</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f) =&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> p f s t a a -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t a a</li><li class="src short"><a href="#v:unsafeSingular">unsafeSingular</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f) =&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> p f s t a b -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t a b</li><li class="src short"><span class="keyword">class</span> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> t, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Foldable.html#t:Foldable">Foldable</a> t) =&gt; <a href="#t:Traversable">Traversable</a> t <span class="keyword">where</span><ul class="subs"><li><a href="#v:traverse">traverse</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f =&gt; (a -&gt; f b) -&gt; t a -&gt; f (t b)</li></ul></li><li class="src short"><span class="keyword">class</span> (<a href="file:///usr/share/doc/libghc-semigroupoids-doc/html/Data-Semigroup-Foldable-Class.html#t:Foldable1">Foldable1</a> t, <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> t) =&gt; <a href="#t:Traversable1">Traversable1</a> t <span class="keyword">where</span><ul class="subs"><li><a href="#v:traverse1">traverse1</a> :: <a href="file:///usr/share/doc/libghc-semigroupoids-doc/html/Data-Functor-Apply.html#t:Apply">Apply</a> f =&gt; (a -&gt; f b) -&gt; t a -&gt; f (t b)</li></ul></li><li class="src short"><a href="#v:both">both</a> :: <a href="file:///usr/share/doc/libghc-bifunctors-doc/html/Data-Bitraversable.html#t:Bitraversable">Bitraversable</a> r =&gt; <a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a> (r a a) (r b b) a b</li><li class="src short"><a href="#v:beside">beside</a> :: (<a href="file:///usr/share/doc/libghc-profunctors-doc/html/Data-Profunctor-Rep.html#t:Representable">Representable</a> q, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> (<a href="file:///usr/share/doc/libghc-profunctors-doc/html/Data-Profunctor-Rep.html#t:Rep">Rep</a> q), <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f, <a href="file:///usr/share/doc/libghc-bifunctors-doc/html/Data-Bitraversable.html#t:Bitraversable">Bitraversable</a> r) =&gt; <a href="Control-Lens-Type.html#t:Optical">Optical</a> p q f s t a b -&gt; <a href="Control-Lens-Type.html#t:Optical">Optical</a> p q f s' t' a b -&gt; <a href="Control-Lens-Type.html#t:Optical">Optical</a> p q f (r s s') (r t t') a b</li><li class="src short"><a href="#v:taking">taking</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> p f s t a a -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t a a</li><li class="src short"><a href="#v:dropping">dropping</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p (<a href="Control-Lens-Internal-Indexed.html#t:Indexing">Indexing</a> f) s t a a -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t a a</li><li class="src short"><a href="#v:failing">failing</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f) =&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> p f s t a b -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t a b -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t a b</li><li class="src short"><a href="#v:deepOf">deepOf</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f) =&gt; <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> f s t s t -&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> p f s t a b -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t a b</li><li class="src short"><a href="#v:ignored">ignored</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f =&gt; pafb -&gt; s -&gt; f s</li><li class="src short"><span class="keyword">class</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> k =&gt; <a href="#t:TraverseMin">TraverseMin</a> k m | m -&gt; k <span class="keyword">where</span><ul class="subs"><li><a href="#v:traverseMin">traverseMin</a> :: <a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a> k (m v) v</li></ul></li><li class="src short"><span class="keyword">class</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> k =&gt; <a href="#t:TraverseMax">TraverseMax</a> k m | m -&gt; k <span class="keyword">where</span><ul class="subs"><li><a href="#v:traverseMax">traverseMax</a> :: <a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a> k (m v) v</li></ul></li><li class="src short"><a href="#v:traversed">traversed</a> :: <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> (f a) (f b) a b</li><li class="src short"><a href="#v:traversed1">traversed1</a> :: <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> f =&gt; <a href="Control-Lens-Traversal.html#t:IndexedTraversal1">IndexedTraversal1</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> (f a) (f b) a b</li><li class="src short"><a href="#v:traversed64">traversed64</a> :: <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int64">Int64</a> (f a) (f b) a b</li><li class="src short"><a href="#v:elementOf">elementOf</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f =&gt; <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexing">Indexing</a> f) s t a a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Control-Lens-Type.html#t:IndexedLensLike">IndexedLensLike</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> f s t a a</li><li class="src short"><a href="#v:element">element</a> :: <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> t =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> (t a) a</li><li class="src short"><a href="#v:elementsOf">elementsOf</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f =&gt; <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexing">Indexing</a> f) s t a a -&gt; (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; <a href="Control-Lens-Type.html#t:IndexedLensLike">IndexedLensLike</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> f s t a a</li><li class="src short"><a href="#v:elements">elements</a> :: <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> t =&gt; (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; <a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> (t a) a</li><li class="src short"><a href="#v:ipartsOf">ipartsOf</a> :: <span class="keyword">forall</span> i p f s t a. (<a href="Control-Lens-Internal-Indexed.html#t:Indexable">Indexable</a> [i] p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f) =&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) f s t a a -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t [a] [a]</li><li class="src short"><a href="#v:ipartsOf-39-">ipartsOf'</a> :: <span class="keyword">forall</span> i p f s t a. (<a href="Control-Lens-Internal-Indexed.html#t:Indexable">Indexable</a> [i] p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f) =&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) (<a href="Control-Lens-Traversal.html#t:Bazaar-39-">Bazaar'</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) a) s t a a -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t [a] [a]</li><li class="src short"><a href="#v:iunsafePartsOf">iunsafePartsOf</a> :: <span class="keyword">forall</span> i p f s t a b. (<a href="Control-Lens-Internal-Indexed.html#t:Indexable">Indexable</a> [i] p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f) =&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) f s t a b -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t [a] [b]</li><li class="src short"><a href="#v:iunsafePartsOf-39-">iunsafePartsOf'</a> :: <span class="keyword">forall</span> i s t a b. <a href="Control-Lens-Type.html#t:Over">Over</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) a b) s t a b -&gt; <a href="Control-Lens-Type.html#t:IndexedLens">IndexedLens</a> [i] s t [a] [b]</li><li class="src short"><a href="#v:itraverseOf">itraverseOf</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i a (f b) -&gt; s -&gt; f t) -&gt; (i -&gt; a -&gt; f b) -&gt; s -&gt; f t</li><li class="src short"><a href="#v:iforOf">iforOf</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i a (f b) -&gt; s -&gt; f t) -&gt; s -&gt; (i -&gt; a -&gt; f b) -&gt; f t</li><li class="src short"><a href="#v:imapMOf">imapMOf</a> :: <a href="Control-Lens-Type.html#t:Over">Over</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:WrappedMonad">WrappedMonad</a> m) s t a b -&gt; (i -&gt; a -&gt; m b) -&gt; s -&gt; m t</li><li class="src short"><a href="#v:iforMOf">iforMOf</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i a (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:WrappedMonad">WrappedMonad</a> m b) -&gt; s -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:WrappedMonad">WrappedMonad</a> m t) -&gt; s -&gt; (i -&gt; a -&gt; m b) -&gt; m t</li><li class="src short"><a href="#v:imapAccumROf">imapAccumROf</a> :: <a href="Control-Lens-Type.html#t:Over">Over</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Applicative-Backwards.html#t:Backwards">Backwards</a> (<a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-State-Lazy.html#t:State">State</a> acc)) s t a b -&gt; (i -&gt; acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t)</li><li class="src short"><a href="#v:imapAccumLOf">imapAccumLOf</a> :: <a href="Control-Lens-Type.html#t:Over">Over</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) (<a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-State-Lazy.html#t:State">State</a> acc) s t a b -&gt; (i -&gt; acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t)</li><li class="src short"><a href="#v:traverseBy">traverseBy</a> :: <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> t =&gt; (<span class="keyword">forall</span> x. x -&gt; f x) -&gt; (<span class="keyword">forall</span> x y. f (x -&gt; y) -&gt; f x -&gt; f y) -&gt; (a -&gt; f b) -&gt; t a -&gt; f (t b)</li><li class="src short"><a href="#v:traverseByOf">traverseByOf</a> :: <a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a> s t a b -&gt; (<span class="keyword">forall</span> x. x -&gt; f x) -&gt; (<span class="keyword">forall</span> x y. f (x -&gt; y) -&gt; f x -&gt; f y) -&gt; (a -&gt; f b) -&gt; s -&gt; f t</li><li class="src short"><a href="#v:sequenceBy">sequenceBy</a> :: <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> t =&gt; (<span class="keyword">forall</span> x. x -&gt; f x) -&gt; (<span class="keyword">forall</span> x y. f (x -&gt; y) -&gt; f x -&gt; f y) -&gt; t (f a) -&gt; f (t a)</li><li class="src short"><a href="#v:sequenceByOf">sequenceByOf</a> :: <a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a> s t (f b) b -&gt; (<span class="keyword">forall</span> x. x -&gt; f x) -&gt; (<span class="keyword">forall</span> x y. f (x -&gt; y) -&gt; f x -&gt; f y) -&gt; s -&gt; f t</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:Bazaar">Bazaar</a> p a b t = <a href="#v:Bazaar">Bazaar</a> {<ul class="subs"><li><a href="#v:runBazaar">runBazaar</a> :: <span class="keyword">forall</span> f. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f =&gt; p a (f b) -&gt; f t</li></ul>}</li><li class="src short"><span class="keyword">type</span> <a href="#t:Bazaar-39-">Bazaar'</a> p a = <a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> p a a</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:Bazaar1">Bazaar1</a> p a b t = <a href="#v:Bazaar1">Bazaar1</a> {<ul class="subs"><li><a href="#v:runBazaar1">runBazaar1</a> :: <span class="keyword">forall</span> f. <a href="file:///usr/share/doc/libghc-semigroupoids-doc/html/Data-Functor-Apply.html#t:Apply">Apply</a> f =&gt; p a (f b) -&gt; f t</li></ul>}</li><li class="src short"><span class="keyword">type</span> <a href="#t:Bazaar1-39-">Bazaar1'</a> p a = <a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a> p a a</li><li class="src short"><a href="#v:loci">loci</a> :: <a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a> (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> (-&gt;) a c s) (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> (-&gt;) b c s) a b</li><li class="src short"><a href="#v:iloci">iloci</a> :: <a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a> i (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) a c s) (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) b c s) a b</li><li class="src short"><a href="#v:confusing">confusing</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f =&gt; <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/libghc-kan-extensions-doc/html/Data-Functor-Kan-Rift.html#t:Rift">Rift</a> (<a href="file:///usr/share/doc/libghc-kan-extensions-doc/html/Data-Functor-Yoneda.html#t:Yoneda">Yoneda</a> f) (<a href="file:///usr/share/doc/libghc-kan-extensions-doc/html/Data-Functor-Yoneda.html#t:Yoneda">Yoneda</a> f)) s t a b -&gt; <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> f s t a b</li></ul></div><div id="interface"><h1 id="g:1">Traversals</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Traversal" class="def">Traversal</a> s t a b = <span class="keyword">forall</span> f. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f =&gt; (a -&gt; f b) -&gt; s -&gt; f t <a href="src/Control-Lens-Type.html#Traversal" class="link">Source</a></p><div class="doc"><p>A <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> can be used directly as a <code><a href="Control-Lens-Setter.html#v:Setter">Setter</a></code> or a <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> (but not as a <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code>) and provides
 the ability to both read and update multiple fields, subject to some relatively weak <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> laws.</p><p>These have also been known as multilenses, but they have the signature and spirit of</p><pre><code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:traverse">traverse</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:Traversable">Traversable</a></code> f =&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> (f a) (f b) a b
</pre><p>and the more evocative name suggests their application.</p><p>Most of the time the <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> you will want to use is just <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:traverse">traverse</a></code>, but you can also pass any
 <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> or <code><a href="Control-Lens-Type.html#t:Iso">Iso</a></code> as a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code>, and composition of a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> (or <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> or <code><a href="Control-Lens-Type.html#t:Iso">Iso</a></code>) with a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> (or <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> or <code><a href="Control-Lens-Type.html#t:Iso">Iso</a></code>)
 using (<code>.</code>) forms a valid <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code>.</p><p>The laws for a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> <code>t</code> follow from the laws for <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:Traversable">Traversable</a></code> as stated in &quot;The Essence of the Iterator Pattern&quot;.</p><pre>t <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#v:pure">pure</a></code> &#8801; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#v:pure">pure</a></code>
<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#v:fmap">fmap</a></code> (t f) <code>.</code> t g &#8801; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#v:getCompose">getCompose</a></code> <code>.</code> t (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#v:Compose">Compose</a></code> <code>.</code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#v:fmap">fmap</a></code> f <code>.</code> g)
</pre><p>One consequence of this requirement is that a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> needs to leave the same number of elements as a
 candidate for subsequent <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> that it started with. Another testament to the strength of these laws
 is that the caveat expressed in section 5.5 of the &quot;Essence of the Iterator Pattern&quot; about exotic
 <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:Traversable">Traversable</a></code> instances that <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:traverse">traverse</a></code> the same entry multiple times was actually already ruled out by the
 second law in that same paper!</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Traversal-39-" class="def">Traversal'</a> s a = <a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a> s s a a <a href="src/Control-Lens-Type.html#Traversal%27" class="link">Source</a></p><div class="doc"><pre>type <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> = <code><a href="Control-Lens-Type.html#t:Simple">Simple</a></code> <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code>
</pre></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Traversal1" class="def">Traversal1</a> s t a b = <span class="keyword">forall</span> f. <a href="file:///usr/share/doc/libghc-semigroupoids-doc/html/Data-Functor-Apply.html#t:Apply">Apply</a> f =&gt; (a -&gt; f b) -&gt; s -&gt; f t <a href="src/Control-Lens-Type.html#Traversal1" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Traversal1-39-" class="def">Traversal1'</a> s a = <a href="Control-Lens-Traversal.html#t:Traversal1">Traversal1</a> s s a a <a href="src/Control-Lens-Type.html#Traversal1%27" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:IndexedTraversal" class="def">IndexedTraversal</a> i s t a b = <span class="keyword">forall</span> p f. (<a href="Control-Lens-Internal-Indexed.html#t:Indexable">Indexable</a> i p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f) =&gt; p a (f b) -&gt; s -&gt; f t <a href="src/Control-Lens-Type.html#IndexedTraversal" class="link">Source</a></p><div class="doc"><p>Every <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> is a valid <code><a href="Control-Lens-Traversal.html#v:Traversal">Traversal</a></code> or
 <code><a href="Control-Lens-Fold.html#v:IndexedFold">IndexedFold</a></code>.</p><p>The <code><a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a></code> constraint is used to allow an <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> to be used
 directly as a <code><a href="Control-Lens-Traversal.html#v:Traversal">Traversal</a></code>.</p><p>The <code><a href="Control-Lens-Traversal.html#v:Traversal">Traversal</a></code> laws are still required to hold.</p><p>In addition, the index <code>i</code> should satisfy the requirement that it stays
 unchanged even when modifying the value <code>a</code>, otherwise traversals like
 <code>indices</code> break the <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> laws.</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:IndexedTraversal-39-" class="def">IndexedTraversal'</a> i s a = <a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a> i s s a a <a href="src/Control-Lens-Type.html#IndexedTraversal%27" class="link">Source</a></p><div class="doc"><pre>type <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a></code> i = <code><a href="Control-Lens-Type.html#t:Simple">Simple</a></code> (<code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i)
</pre></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:IndexedTraversal1" class="def">IndexedTraversal1</a> i s t a b = <span class="keyword">forall</span> p f. (<a href="Control-Lens-Internal-Indexed.html#t:Indexable">Indexable</a> i p, <a href="file:///usr/share/doc/libghc-semigroupoids-doc/html/Data-Functor-Apply.html#t:Apply">Apply</a> f) =&gt; p a (f b) -&gt; s -&gt; f t <a href="src/Control-Lens-Type.html#IndexedTraversal1" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:IndexedTraversal1-39-" class="def">IndexedTraversal1'</a> i s a = <a href="Control-Lens-Traversal.html#t:IndexedTraversal1">IndexedTraversal1</a> i s s a a <a href="src/Control-Lens-Type.html#IndexedTraversal1%27" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:ATraversal" class="def">ATraversal</a> s t a b = <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> (-&gt;) a b) s t a b <a href="src/Control-Lens-Traversal.html#ATraversal" class="link">Source</a></p><div class="doc"><p>When you see this as an argument to a function, it expects a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code>.</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:ATraversal-39-" class="def">ATraversal'</a> s a = <a href="Control-Lens-Traversal.html#t:ATraversal">ATraversal</a> s s a a <a href="src/Control-Lens-Traversal.html#ATraversal%27" class="link">Source</a></p><div class="doc"><pre>type <code><a href="Control-Lens-Traversal.html#t:ATraversal-39-">ATraversal'</a></code> = <code><a href="Control-Lens-Type.html#t:Simple">Simple</a></code> <code><a href="Control-Lens-Traversal.html#t:ATraversal">ATraversal</a></code>
</pre></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:ATraversal1" class="def">ATraversal1</a> s t a b = <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a> (-&gt;) a b) s t a b <a href="src/Control-Lens-Traversal.html#ATraversal1" class="link">Source</a></p><div class="doc"><p>When you see this as an argument to a function, it expects a <code><a href="Control-Lens-Traversal.html#t:Traversal1">Traversal1</a></code>.</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:ATraversal1-39-" class="def">ATraversal1'</a> s a = <a href="Control-Lens-Traversal.html#t:ATraversal1">ATraversal1</a> s s a a <a href="src/Control-Lens-Traversal.html#ATraversal1%27" class="link">Source</a></p><div class="doc"><pre>type <code><a href="Control-Lens-Traversal.html#t:ATraversal1-39-">ATraversal1'</a></code> = <code><a href="Control-Lens-Type.html#t:Simple">Simple</a></code> <code><a href="Control-Lens-Traversal.html#t:ATraversal1">ATraversal1</a></code>
</pre></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:AnIndexedTraversal" class="def">AnIndexedTraversal</a> i s t a b = <a href="Control-Lens-Type.html#t:Over">Over</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) a b) s t a b <a href="src/Control-Lens-Traversal.html#AnIndexedTraversal" class="link">Source</a></p><div class="doc"><p>When you see this as an argument to a function, it expects an <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code>.</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:AnIndexedTraversal-39-" class="def">AnIndexedTraversal'</a> i s a = <a href="Control-Lens-Traversal.html#t:AnIndexedTraversal">AnIndexedTraversal</a> i s s a a <a href="src/Control-Lens-Traversal.html#AnIndexedTraversal%27" class="link">Source</a></p><div class="doc"><pre>type <code><a href="Control-Lens-Traversal.html#t:AnIndexedTraversal-39-">AnIndexedTraversal'</a></code> = <code><a href="Control-Lens-Type.html#t:Simple">Simple</a></code> (<code><a href="Control-Lens-Traversal.html#t:AnIndexedTraversal">AnIndexedTraversal</a></code> i)
</pre></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:AnIndexedTraversal1" class="def">AnIndexedTraversal1</a> i s t a b = <a href="Control-Lens-Type.html#t:Over">Over</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) (<a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) a b) s t a b <a href="src/Control-Lens-Traversal.html#AnIndexedTraversal1" class="link">Source</a></p><div class="doc"><p>When you see this as an argument to a function, it expects an <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal1">IndexedTraversal1</a></code>.</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:AnIndexedTraversal1-39-" class="def">AnIndexedTraversal1'</a> i s a = <a href="Control-Lens-Traversal.html#t:AnIndexedTraversal1">AnIndexedTraversal1</a> i s s a a <a href="src/Control-Lens-Traversal.html#AnIndexedTraversal1%27" class="link">Source</a></p><div class="doc"><pre>type <code><a href="Control-Lens-Traversal.html#t:AnIndexedTraversal1-39-">AnIndexedTraversal1'</a></code> = <code><a href="Control-Lens-Type.html#t:Simple">Simple</a></code> (<code><a href="Control-Lens-Traversal.html#t:AnIndexedTraversal1">AnIndexedTraversal1</a></code> i)
</pre></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Traversing" class="def">Traversing</a> p f s t a b = <a href="Control-Lens-Type.html#t:Over">Over</a> p (<a href="Control-Lens-Internal-Bazaar.html#t:BazaarT">BazaarT</a> p f a b) s t a b <a href="src/Control-Lens-Traversal.html#Traversing" class="link">Source</a></p><div class="doc"><p>When you see this as an argument to a function, it expects</p><ul><li>to be indexed if <code>p</code> is an instance of <code><a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a></code> i,</li><li>to be unindexed if <code>p</code> is <code>(-&gt;)</code>,</li><li>a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> if <code>f</code> is <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code>,</li><li>a <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> if <code>f</code> is only a <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code> and <code>Contravariant</code>,</li><li>a <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> if <code>p</code> is only a <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code>,</li><li>a <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> if <code>f</code> is <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code>, <code>Contravariant</code> and <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code>.</li></ul></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Traversing-39-" class="def">Traversing'</a> p f s a = <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> p f s s a a <a href="src/Control-Lens-Traversal.html#Traversing%27" class="link">Source</a></p><div class="doc"><pre>type <code><a href="Control-Lens-Traversal.html#t:Traversing-39-">Traversing'</a></code> f = <code><a href="Control-Lens-Type.html#t:Simple">Simple</a></code> (<code><a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a></code> f)
</pre></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Traversing1" class="def">Traversing1</a> p f s t a b = <a href="Control-Lens-Type.html#t:Over">Over</a> p (<a href="Control-Lens-Internal-Bazaar.html#t:BazaarT1">BazaarT1</a> p f a b) s t a b <a href="src/Control-Lens-Traversal.html#Traversing1" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Traversing1-39-" class="def">Traversing1'</a> p f s a = <a href="Control-Lens-Traversal.html#t:Traversing1">Traversing1</a> p f s s a a <a href="src/Control-Lens-Traversal.html#Traversing1%27" class="link">Source</a></p></div><h1 id="g:2">Traversing and Lensing</h1><div class="top"><p class="src"><a name="v:traverseOf" class="def">traverseOf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> f s t a b -&gt; (a -&gt; f b) -&gt; s -&gt; f t <a href="src/Control-Lens-Traversal.html#traverseOf" class="link">Source</a></p><div class="doc"><p>Map each element of a structure targeted by a <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> or <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code>,
 evaluate these actions from left to right, and collect the results.</p><p>This function is only provided for consistency, <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:id">id</a></code> is strictly more general.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>traverseOf each print (1,2,3)
</code></strong>1
2
3
((),(),())
</pre><pre><code><a href="Control-Lens-Traversal.html#v:traverseOf">traverseOf</a></code> &#8801; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:id">id</a></code>
<code><a href="Control-Lens-Traversal.html#v:itraverseOf">itraverseOf</a></code> l &#8801; <code><a href="Control-Lens-Traversal.html#v:traverseOf">traverseOf</a></code> l <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code> <code><a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a></code>
<code><a href="Control-Lens-Traversal.html#v:itraverseOf">itraverseOf</a></code> <code>itraversed</code> &#8801; <code>itraverse</code>
</pre><p>This yields the obvious law:</p><pre><code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code> &#8801; <code><a href="Control-Lens-Traversal.html#v:traverseOf">traverseOf</a></code> <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code>
</pre><pre><code><a href="Control-Lens-Traversal.html#v:traverseOf">traverseOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code> f =&gt; <code><a href="Control-Lens-Type.html#t:Iso">Iso</a></code> s t a b       -&gt; (a -&gt; f b) -&gt; s -&gt; f t
<code><a href="Control-Lens-Traversal.html#v:traverseOf">traverseOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code> f =&gt; <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t a b      -&gt; (a -&gt; f b) -&gt; s -&gt; f t
<code><a href="Control-Lens-Traversal.html#v:traverseOf">traverseOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code> f =&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b -&gt; (a -&gt; f b) -&gt; s -&gt; f t
</pre></div></div><div class="top"><p class="src"><a name="v:forOf" class="def">forOf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> f s t a b -&gt; s -&gt; (a -&gt; f b) -&gt; f t <a href="src/Control-Lens-Traversal.html#forOf" class="link">Source</a></p><div class="doc"><p>A version of <code><a href="Control-Lens-Traversal.html#v:traverseOf">traverseOf</a></code> with the arguments flipped, such that:</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>forOf each (1,2,3) print
</code></strong>1
2
3
((),(),())
</pre><p>This function is only provided for consistency, <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Function.html#v:flip">flip</a></code> is strictly more general.</p><pre><code><a href="Control-Lens-Traversal.html#v:forOf">forOf</a></code> &#8801; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Function.html#v:flip">flip</a></code>
<code><a href="Control-Lens-Traversal.html#v:forOf">forOf</a></code> &#8801; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Function.html#v:flip">flip</a></code> . <code><a href="Control-Lens-Traversal.html#v:traverseOf">traverseOf</a></code>
</pre><pre><code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:for">for</a></code> &#8801; <code><a href="Control-Lens-Traversal.html#v:forOf">forOf</a></code> <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code>
<code><a href="Control-Lens-Indexed.html#v:ifor">ifor</a></code> l s &#8801; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:for">for</a></code> l s <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code> <code><a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a></code>
</pre><pre><code><a href="Control-Lens-Traversal.html#v:forOf">forOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code> f =&gt; <code><a href="Control-Lens-Type.html#t:Iso">Iso</a></code> s t a b -&gt; s -&gt; (a -&gt; f b) -&gt; f t
<code><a href="Control-Lens-Traversal.html#v:forOf">forOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code> f =&gt; <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t a b -&gt; s -&gt; (a -&gt; f b) -&gt; f t
<code><a href="Control-Lens-Traversal.html#v:forOf">forOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code> f =&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b -&gt; s -&gt; (a -&gt; f b) -&gt; f t
</pre></div></div><div class="top"><p class="src"><a name="v:sequenceAOf" class="def">sequenceAOf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> f s t (f b) b -&gt; s -&gt; f t <a href="src/Control-Lens-Traversal.html#sequenceAOf" class="link">Source</a></p><div class="doc"><p>Evaluate each action in the structure from left to right, and collect
 the results.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>sequenceAOf both ([1,2],[3,4])
</code></strong>[(1,3),(1,4),(2,3),(2,4)]
</pre><pre><code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:sequenceA">sequenceA</a></code> &#8801; <code><a href="Control-Lens-Traversal.html#v:sequenceAOf">sequenceAOf</a></code> <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code> &#8801; <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:id">id</a></code>
<code><a href="Control-Lens-Traversal.html#v:sequenceAOf">sequenceAOf</a></code> l &#8801; <code><a href="Control-Lens-Traversal.html#v:traverseOf">traverseOf</a></code> l <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:id">id</a></code> &#8801; l <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:id">id</a></code>
</pre><pre><code><a href="Control-Lens-Traversal.html#v:sequenceAOf">sequenceAOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code> f =&gt; <code><a href="Control-Lens-Type.html#t:Iso">Iso</a></code> s t (f b) b       -&gt; s -&gt; f t
<code><a href="Control-Lens-Traversal.html#v:sequenceAOf">sequenceAOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code> f =&gt; <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t (f b) b      -&gt; s -&gt; f t
<code><a href="Control-Lens-Traversal.html#v:sequenceAOf">sequenceAOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code> f =&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t (f b) b -&gt; s -&gt; f t
</pre></div></div><div class="top"><p class="src"><a name="v:mapMOf" class="def">mapMOf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:WrappedMonad">WrappedMonad</a> m) s t a b -&gt; (a -&gt; m b) -&gt; s -&gt; m t <a href="src/Control-Lens-Traversal.html#mapMOf" class="link">Source</a></p><div class="doc"><p>Map each element of a structure targeted by a <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> to a monadic action,
 evaluate these actions from left to right, and collect the results.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>mapMOf both (\x -&gt; [x, x + 1]) (1,3)
</code></strong>[(1,3),(1,4),(2,3),(2,4)]
</pre><pre><code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:mapM">mapM</a></code> &#8801; <code><a href="Control-Lens-Traversal.html#v:mapMOf">mapMOf</a></code> <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code>
<code><a href="Control-Lens-Traversal.html#v:imapMOf">imapMOf</a></code> l &#8801; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:forM">forM</a></code> l <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code> <code><a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a></code>
</pre><pre><code><a href="Control-Lens-Traversal.html#v:mapMOf">mapMOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a></code> m =&gt; <code><a href="Control-Lens-Type.html#t:Iso">Iso</a></code> s t a b       -&gt; (a -&gt; m b) -&gt; s -&gt; m t
<code><a href="Control-Lens-Traversal.html#v:mapMOf">mapMOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a></code> m =&gt; <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t a b      -&gt; (a -&gt; m b) -&gt; s -&gt; m t
<code><a href="Control-Lens-Traversal.html#v:mapMOf">mapMOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a></code> m =&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b -&gt; (a -&gt; m b) -&gt; s -&gt; m t
</pre></div></div><div class="top"><p class="src"><a name="v:forMOf" class="def">forMOf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:WrappedMonad">WrappedMonad</a> m) s t a b -&gt; s -&gt; (a -&gt; m b) -&gt; m t <a href="src/Control-Lens-Traversal.html#forMOf" class="link">Source</a></p><div class="doc"><p><code><a href="Control-Lens-Traversal.html#v:forMOf">forMOf</a></code> is a flipped version of <code><a href="Control-Lens-Traversal.html#v:mapMOf">mapMOf</a></code>, consistent with the definition of <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:forM">forM</a></code>.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>forMOf both (1,3) $ \x -&gt; [x, x + 1]
</code></strong>[(1,3),(1,4),(2,3),(2,4)]
</pre><pre><code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:forM">forM</a></code> &#8801; <code><a href="Control-Lens-Traversal.html#v:forMOf">forMOf</a></code> <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code>
<code><a href="Control-Lens-Traversal.html#v:forMOf">forMOf</a></code> l &#8801; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Function.html#v:flip">flip</a></code> (<code><a href="Control-Lens-Traversal.html#v:mapMOf">mapMOf</a></code> l)
<code><a href="Control-Lens-Traversal.html#v:iforMOf">iforMOf</a></code> l s &#8801; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:forM">forM</a></code> l s <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code> <code><a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a></code>
</pre><pre><code><a href="Control-Lens-Traversal.html#v:forMOf">forMOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a></code> m =&gt; <code><a href="Control-Lens-Type.html#t:Iso">Iso</a></code> s t a b       -&gt; s -&gt; (a -&gt; m b) -&gt; m t
<code><a href="Control-Lens-Traversal.html#v:forMOf">forMOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a></code> m =&gt; <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t a b      -&gt; s -&gt; (a -&gt; m b) -&gt; m t
<code><a href="Control-Lens-Traversal.html#v:forMOf">forMOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a></code> m =&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b -&gt; s -&gt; (a -&gt; m b) -&gt; m t
</pre></div></div><div class="top"><p class="src"><a name="v:sequenceOf" class="def">sequenceOf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:WrappedMonad">WrappedMonad</a> m) s t (m b) b -&gt; s -&gt; m t <a href="src/Control-Lens-Traversal.html#sequenceOf" class="link">Source</a></p><div class="doc"><p>Sequence the (monadic) effects targeted by a <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> in a container from left to right.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>sequenceOf each ([1,2],[3,4],[5,6])
</code></strong>[(1,3,5),(1,3,6),(1,4,5),(1,4,6),(2,3,5),(2,3,6),(2,4,5),(2,4,6)]
</pre><pre><code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:sequence">sequence</a></code> &#8801; <code><a href="Control-Lens-Traversal.html#v:sequenceOf">sequenceOf</a></code> <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code>
<code><a href="Control-Lens-Traversal.html#v:sequenceOf">sequenceOf</a></code> l &#8801; <code><a href="Control-Lens-Traversal.html#v:mapMOf">mapMOf</a></code> l <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:id">id</a></code>
<code><a href="Control-Lens-Traversal.html#v:sequenceOf">sequenceOf</a></code> l &#8801; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#v:unwrapMonad">unwrapMonad</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code> l <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#v:WrapMonad">WrapMonad</a></code>
</pre><pre><code><a href="Control-Lens-Traversal.html#v:sequenceOf">sequenceOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a></code> m =&gt; <code><a href="Control-Lens-Type.html#t:Iso">Iso</a></code> s t (m b) b       -&gt; s -&gt; m t
<code><a href="Control-Lens-Traversal.html#v:sequenceOf">sequenceOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a></code> m =&gt; <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t (m b) b      -&gt; s -&gt; m t
<code><a href="Control-Lens-Traversal.html#v:sequenceOf">sequenceOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a></code> m =&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t (m b) b -&gt; s -&gt; m t
</pre></div></div><div class="top"><p class="src"><a name="v:transposeOf" class="def">transposeOf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:ZipList">ZipList</a> s t [a] a -&gt; s -&gt; [t] <a href="src/Control-Lens-Traversal.html#transposeOf" class="link">Source</a></p><div class="doc"><p>This generalizes <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-List.html#v:transpose">transpose</a></code> to an arbitrary <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code>.</p><p>Note: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-List.html#v:transpose">transpose</a></code> handles ragged inputs more intelligently, but for non-ragged inputs:</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>transposeOf traverse [[1,2,3],[4,5,6]]
</code></strong>[[1,4],[2,5],[3,6]]
</pre><pre><code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-List.html#v:transpose">transpose</a></code> &#8801; <code><a href="Control-Lens-Traversal.html#v:transposeOf">transposeOf</a></code> <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code>
</pre><p>Since every <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> is a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code>, we can use this as a form of
 monadic strength as well:</p><pre><code><a href="Control-Lens-Traversal.html#v:transposeOf">transposeOf</a></code> <code><a href="Control-Lens-Tuple.html#v:_2">_2</a></code> :: (b, [a]) -&gt; [(b, a)]
</pre></div></div><div class="top"><p class="src"><a name="v:mapAccumLOf" class="def">mapAccumLOf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-State-Lazy.html#t:State">State</a> acc) s t a b -&gt; (acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t) <a href="src/Control-Lens-Traversal.html#mapAccumLOf" class="link">Source</a></p><div class="doc"><p>This generalizes <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:mapAccumL">mapAccumL</a></code> to an arbitrary <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code>.</p><pre><code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:mapAccumL">mapAccumL</a></code> &#8801; <code><a href="Control-Lens-Traversal.html#v:mapAccumLOf">mapAccumLOf</a></code> <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code>
</pre><p><code><a href="Control-Lens-Traversal.html#v:mapAccumLOf">mapAccumLOf</a></code> accumulates <code><a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-State-Lazy.html#t:State">State</a></code> from left to right.</p><pre><code><a href="Control-Lens-Traversal.html#v:mapAccumLOf">mapAccumLOf</a></code> :: <code><a href="Control-Lens-Type.html#t:Iso">Iso</a></code> s t a b       -&gt; (acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t)
<code><a href="Control-Lens-Traversal.html#v:mapAccumLOf">mapAccumLOf</a></code> :: <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t a b      -&gt; (acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t)
<code><a href="Control-Lens-Traversal.html#v:mapAccumLOf">mapAccumLOf</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b -&gt; (acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t)
</pre><pre><code><a href="Control-Lens-Traversal.html#v:mapAccumLOf">mapAccumLOf</a></code> :: <code><a href="Control-Lens-Type.html#t:LensLike">LensLike</a></code> (<code><a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-State-Lazy.html#t:State">State</a></code> acc) s t a b -&gt; (acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t)
<code><a href="Control-Lens-Traversal.html#v:mapAccumLOf">mapAccumLOf</a></code> l f acc0 s = <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Tuple.html#v:swap">swap</a></code> (<code><a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-State-Lazy.html#v:runState">runState</a></code> (l (a -&gt; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Monad-Trans-State-Lazy.html#v:state">state</a></code> (acc -&gt; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Tuple.html#v:swap">swap</a></code> (f acc a))) s) acc0)
</pre></div></div><div class="top"><p class="src"><a name="v:mapAccumROf" class="def">mapAccumROf</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Applicative-Backwards.html#t:Backwards">Backwards</a> (<a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-State-Lazy.html#t:State">State</a> acc)) s t a b -&gt; (acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t) <a href="src/Control-Lens-Traversal.html#mapAccumROf" class="link">Source</a></p><div class="doc"><p>This generalizes <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:mapAccumR">mapAccumR</a></code> to an arbitrary <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code>.</p><pre><code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:mapAccumR">mapAccumR</a></code> &#8801; <code><a href="Control-Lens-Traversal.html#v:mapAccumROf">mapAccumROf</a></code> <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code>
</pre><p><code><a href="Control-Lens-Traversal.html#v:mapAccumROf">mapAccumROf</a></code> accumulates <code><a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-State-Lazy.html#t:State">State</a></code> from right to left.</p><pre><code><a href="Control-Lens-Traversal.html#v:mapAccumROf">mapAccumROf</a></code> :: <code><a href="Control-Lens-Type.html#t:Iso">Iso</a></code> s t a b       -&gt; (acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t)
<code><a href="Control-Lens-Traversal.html#v:mapAccumROf">mapAccumROf</a></code> :: <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t a b      -&gt; (acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t)
<code><a href="Control-Lens-Traversal.html#v:mapAccumROf">mapAccumROf</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b -&gt; (acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t)
</pre><pre><code><a href="Control-Lens-Traversal.html#v:mapAccumROf">mapAccumROf</a></code> :: <code><a href="Control-Lens-Type.html#t:LensLike">LensLike</a></code> (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Applicative-Backwards.html#t:Backwards">Backwards</a></code> (<code><a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-State-Lazy.html#t:State">State</a></code> acc)) s t a b -&gt; (acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t)
</pre></div></div><div class="top"><p class="src"><a name="v:scanr1Of" class="def">scanr1Of</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Applicative-Backwards.html#t:Backwards">Backwards</a> (<a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-State-Lazy.html#t:State">State</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> a))) s t a a -&gt; (a -&gt; a -&gt; a) -&gt; s -&gt; t <a href="src/Control-Lens-Traversal.html#scanr1Of" class="link">Source</a></p><div class="doc"><p>This permits the use of <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-OldList.html#v:scanr1">scanr1</a></code> over an arbitrary <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> or <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code>.</p><pre><code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-OldList.html#v:scanr1">scanr1</a></code> &#8801; <code><a href="Control-Lens-Traversal.html#v:scanr1Of">scanr1Of</a></code> <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code>
</pre><pre><code><a href="Control-Lens-Traversal.html#v:scanr1Of">scanr1Of</a></code> :: <code><a href="Control-Lens-Type.html#t:Iso">Iso</a></code> s t a a       -&gt; (a -&gt; a -&gt; a) -&gt; s -&gt; t
<code><a href="Control-Lens-Traversal.html#v:scanr1Of">scanr1Of</a></code> :: <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t a a      -&gt; (a -&gt; a -&gt; a) -&gt; s -&gt; t
<code><a href="Control-Lens-Traversal.html#v:scanr1Of">scanr1Of</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a a -&gt; (a -&gt; a -&gt; a) -&gt; s -&gt; t
</pre></div></div><div class="top"><p class="src"><a name="v:scanl1Of" class="def">scanl1Of</a> :: <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-State-Lazy.html#t:State">State</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a> a)) s t a a -&gt; (a -&gt; a -&gt; a) -&gt; s -&gt; t <a href="src/Control-Lens-Traversal.html#scanl1Of" class="link">Source</a></p><div class="doc"><p>This permits the use of <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-OldList.html#v:scanl1">scanl1</a></code> over an arbitrary <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> or <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code>.</p><pre><code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-OldList.html#v:scanl1">scanl1</a></code> &#8801; <code><a href="Control-Lens-Traversal.html#v:scanl1Of">scanl1Of</a></code> <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code>
</pre><pre><code><a href="Control-Lens-Traversal.html#v:scanl1Of">scanl1Of</a></code> :: <code><a href="Control-Lens-Type.html#t:Iso">Iso</a></code> s t a a       -&gt; (a -&gt; a -&gt; a) -&gt; s -&gt; t
<code><a href="Control-Lens-Traversal.html#v:scanl1Of">scanl1Of</a></code> :: <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t a a      -&gt; (a -&gt; a -&gt; a) -&gt; s -&gt; t
<code><a href="Control-Lens-Traversal.html#v:scanl1Of">scanl1Of</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a a -&gt; (a -&gt; a -&gt; a) -&gt; s -&gt; t
</pre></div></div><div class="top"><p class="src"><a name="v:failover" class="def">failover</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Alternative">Alternative</a> m =&gt; <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/ghc-prim-0.4.0.0/GHC-Tuple.html#t:-40--44--41-">(,)</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:Any">Any</a>) s t a b -&gt; (a -&gt; b) -&gt; s -&gt; m t <a href="src/Control-Lens-Traversal.html#failover" class="link">Source</a></p><div class="doc"><p>Try to map a function over this <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code>, failing if the <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> has no targets.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>failover (element 3) (*2) [1,2] :: Maybe [Int]
</code></strong>Nothing
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>failover _Left (*2) (Right 4) :: Maybe (Either Int Int)
</code></strong>Nothing
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>failover _Right (*2) (Right 4) :: Maybe (Either Int Int)
</code></strong>Just (Right 8)
</pre><pre><code><a href="Control-Lens-Traversal.html#v:failover">failover</a></code> :: Alternative m =&gt; Traversal s t a b -&gt; (a -&gt; b) -&gt; s -&gt; m t
</pre></div></div><div class="top"><p class="src"><a name="v:ifailover" class="def">ifailover</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Alternative">Alternative</a> m =&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) (<a href="file:///usr/share/doc/ghc-doc/html/libraries/ghc-prim-0.4.0.0/GHC-Tuple.html#t:-40--44--41-">(,)</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Monoid.html#t:Any">Any</a>) s t a b -&gt; (i -&gt; a -&gt; b) -&gt; s -&gt; m t <a href="src/Control-Lens-Traversal.html#ifailover" class="link">Source</a></p><div class="doc"><p>Try to map a function which uses the index over this <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code>, failing if the <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> has no targets.</p><pre><code><a href="Control-Lens-Traversal.html#v:ifailover">ifailover</a></code> :: Alternative m =&gt; IndexedTraversal i s t a b -&gt; (i -&gt; a -&gt; b) -&gt; s -&gt; m t
</pre></div></div><h1 id="g:3">Monomorphic Traversals</h1><div class="top"><p class="src"><a name="v:cloneTraversal" class="def">cloneTraversal</a> :: <a href="Control-Lens-Traversal.html#t:ATraversal">ATraversal</a> s t a b -&gt; <a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a> s t a b <a href="src/Control-Lens-Traversal.html#cloneTraversal" class="link">Source</a></p><div class="doc"><p>A <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> is completely characterized by its behavior on a <code><a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a></code>.</p><p>Cloning a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> is one way to make sure you aren't given
 something weaker, such as a <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> and can be
 used as a way to pass around traversals that have to be monomorphic in <code>f</code>.</p><p>Note: This only accepts a proper <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> (or <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code>). To clone a <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code>
 as such, use <code><a href="Control-Lens-Lens.html#v:cloneLens">cloneLens</a></code>.</p><p>Note: It is usually better to use <code><a href="Control-Lens-Reified.html#v:ReifiedTraversal">ReifiedTraversal</a></code> and
 <code><a href="Control-Lens-Reified.html#v:runTraversal">runTraversal</a></code> than to <code><a href="Control-Lens-Traversal.html#v:cloneTraversal">cloneTraversal</a></code>. The
 former can execute at full speed, while the latter needs to round trip through
 the <code><a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a></code>.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>let foo l a = (view (getting (cloneTraversal l)) a, set (cloneTraversal l) 10 a)
</code></strong><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>foo both (&quot;hello&quot;,&quot;world&quot;)
</code></strong>(&quot;helloworld&quot;,(10,10))
</pre><pre><code><a href="Control-Lens-Traversal.html#v:cloneTraversal">cloneTraversal</a></code> :: <code><a href="Control-Lens-Type.html#t:LensLike">LensLike</a></code> (<code><a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a></code> (-&gt;) a b) s t a b -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b
</pre></div></div><div class="top"><p class="src"><a name="v:cloneIndexPreservingTraversal" class="def">cloneIndexPreservingTraversal</a> :: <a href="Control-Lens-Traversal.html#t:ATraversal">ATraversal</a> s t a b -&gt; <a href="Control-Lens-Type.html#t:IndexPreservingTraversal">IndexPreservingTraversal</a> s t a b <a href="src/Control-Lens-Traversal.html#cloneIndexPreservingTraversal" class="link">Source</a></p><div class="doc"><p>Clone a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> yielding an <code><a href="Control-Lens-Type.html#t:IndexPreservingTraversal">IndexPreservingTraversal</a></code> that passes through
 whatever index it is composed with.</p></div></div><div class="top"><p class="src"><a name="v:cloneIndexedTraversal" class="def">cloneIndexedTraversal</a> :: <a href="Control-Lens-Traversal.html#t:AnIndexedTraversal">AnIndexedTraversal</a> i s t a b -&gt; <a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a> i s t a b <a href="src/Control-Lens-Traversal.html#cloneIndexedTraversal" class="link">Source</a></p><div class="doc"><p>Clone an <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> yielding an <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> with the same index.</p></div></div><div class="top"><p class="src"><a name="v:cloneTraversal1" class="def">cloneTraversal1</a> :: <a href="Control-Lens-Traversal.html#t:ATraversal1">ATraversal1</a> s t a b -&gt; <a href="Control-Lens-Traversal.html#t:Traversal1">Traversal1</a> s t a b <a href="src/Control-Lens-Traversal.html#cloneTraversal1" class="link">Source</a></p><div class="doc"><p>A <code><a href="Control-Lens-Traversal.html#t:Traversal1">Traversal1</a></code> is completely characterized by its behavior on a <code><a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a></code>.</p></div></div><div class="top"><p class="src"><a name="v:cloneIndexPreservingTraversal1" class="def">cloneIndexPreservingTraversal1</a> :: <a href="Control-Lens-Traversal.html#t:ATraversal1">ATraversal1</a> s t a b -&gt; <a href="Control-Lens-Type.html#t:IndexPreservingTraversal1">IndexPreservingTraversal1</a> s t a b <a href="src/Control-Lens-Traversal.html#cloneIndexPreservingTraversal1" class="link">Source</a></p><div class="doc"><p>Clone a <code><a href="Control-Lens-Traversal.html#t:Traversal1">Traversal1</a></code> yielding an <code><a href="Control-Lens-Type.html#t:IndexPreservingTraversal1">IndexPreservingTraversal1</a></code> that passes through
 whatever index it is composed with.</p></div></div><div class="top"><p class="src"><a name="v:cloneIndexedTraversal1" class="def">cloneIndexedTraversal1</a> :: <a href="Control-Lens-Traversal.html#t:AnIndexedTraversal1">AnIndexedTraversal1</a> i s t a b -&gt; <a href="Control-Lens-Traversal.html#t:IndexedTraversal1">IndexedTraversal1</a> i s t a b <a href="src/Control-Lens-Traversal.html#cloneIndexedTraversal1" class="link">Source</a></p><div class="doc"><p>Clone an <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal1">IndexedTraversal1</a></code> yielding an <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal1">IndexedTraversal1</a></code> with the same index.</p></div></div><h1 id="g:4">Parts and Holes</h1><div class="top"><p class="src"><a name="v:partsOf" class="def">partsOf</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> (-&gt;) f s t a a -&gt; <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> f s t [a] [a] <a href="src/Control-Lens-Traversal.html#partsOf" class="link">Source</a></p><div class="doc"><p><code><a href="Control-Lens-Traversal.html#v:partsOf">partsOf</a></code> turns a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> into a <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> that resembles an early version of the <code><a href="Data-Data-Lens.html#v:uniplate">uniplate</a></code> (or <code><a href="Data-Data-Lens.html#v:biplate">biplate</a></code>) type.</p><p><em>Note:</em> You should really try to maintain the invariant of the number of children in the list.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>(a,b,c) &amp; partsOf each .~ [x,y,z]
</code></strong>(x,y,z)
</pre><p>Any extras will be lost. If you do not supply enough, then the remainder will come from the original structure.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>(a,b,c) &amp; partsOf each .~ [w,x,y,z]
</code></strong>(w,x,y)
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>(a,b,c) &amp; partsOf each .~ [x,y]
</code></strong>(x,y,c)
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>('b', 'a', 'd', 'c') &amp; partsOf each %~ sort
</code></strong>('a','b','c','d')
</pre><p>So technically, this is only a <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> if you do not change the number of results it returns.</p><p>When applied to a <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> the result is merely a <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code>.</p><pre><code><a href="Control-Lens-Traversal.html#v:partsOf">partsOf</a></code> :: <code><a href="Control-Lens-Type.html#t:Iso-39-">Iso'</a></code> s a       -&gt; <code><a href="Control-Lens-Type.html#t:Lens-39-">Lens'</a></code> s [a]
<code><a href="Control-Lens-Traversal.html#v:partsOf">partsOf</a></code> :: <code><a href="Control-Lens-Type.html#t:Lens-39-">Lens'</a></code> s a      -&gt; <code><a href="Control-Lens-Type.html#t:Lens-39-">Lens'</a></code> s [a]
<code><a href="Control-Lens-Traversal.html#v:partsOf">partsOf</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> s a -&gt; <code><a href="Control-Lens-Type.html#t:Lens-39-">Lens'</a></code> s [a]
<code><a href="Control-Lens-Traversal.html#v:partsOf">partsOf</a></code> :: <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a       -&gt; <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> s [a]
<code><a href="Control-Lens-Traversal.html#v:partsOf">partsOf</a></code> :: <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> s a     -&gt; <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> s [a]
</pre></div></div><div class="top"><p class="src"><a name="v:partsOf-39-" class="def">partsOf'</a> :: <a href="Control-Lens-Traversal.html#t:ATraversal">ATraversal</a> s t a a -&gt; <a href="Control-Lens-Type.html#t:Lens">Lens</a> s t [a] [a] <a href="src/Control-Lens-Traversal.html#partsOf%27" class="link">Source</a></p><div class="doc"><p>A type-restricted version of <code><a href="Control-Lens-Traversal.html#v:partsOf">partsOf</a></code> that can only be used with a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code>.</p></div></div><div class="top"><p class="src"><a name="v:unsafePartsOf" class="def">unsafePartsOf</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> (-&gt;) f s t a b -&gt; <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> f s t [a] [b] <a href="src/Control-Lens-Traversal.html#unsafePartsOf" class="link">Source</a></p><div class="doc"><p><code><a href="Control-Lens-Traversal.html#v:unsafePartsOf">unsafePartsOf</a></code> turns a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> into a <code><a href="Data-Data-Lens.html#v:uniplate">uniplate</a></code> (or <code><a href="Data-Data-Lens.html#v:biplate">biplate</a></code>) family.</p><p>If you do not need the types of <code>s</code> and <code>t</code> to be different, it is recommended that
 you use <code><a href="Control-Lens-Traversal.html#v:partsOf">partsOf</a></code>.</p><p>It is generally safer to traverse with the <code><a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a></code> rather than use this
 combinator. However, it is sometimes convenient.</p><p>This is unsafe because if you don't supply at least as many <code>b</code>'s as you were
 given <code>a</code>'s, then the reconstruction of <code>t</code> <em>will</em> result in an error!</p><p>When applied to a <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> the result is merely a <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> (and becomes safe).</p><pre><code><a href="Control-Lens-Traversal.html#v:unsafePartsOf">unsafePartsOf</a></code> :: <code><a href="Control-Lens-Type.html#t:Iso">Iso</a></code> s t a b       -&gt; <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t [a] [b]
<code><a href="Control-Lens-Traversal.html#v:unsafePartsOf">unsafePartsOf</a></code> :: <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t a b      -&gt; <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t [a] [b]
<code><a href="Control-Lens-Traversal.html#v:unsafePartsOf">unsafePartsOf</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b -&gt; <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t [a] [b]
<code><a href="Control-Lens-Traversal.html#v:unsafePartsOf">unsafePartsOf</a></code> :: <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a          -&gt; <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> s [a]
<code><a href="Control-Lens-Traversal.html#v:unsafePartsOf">unsafePartsOf</a></code> :: <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> s a        -&gt; <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> s [a]
</pre></div></div><div class="top"><p class="src"><a name="v:unsafePartsOf-39-" class="def">unsafePartsOf'</a> :: <a href="Control-Lens-Traversal.html#t:ATraversal">ATraversal</a> s t a b -&gt; <a href="Control-Lens-Type.html#t:Lens">Lens</a> s t [a] [b] <a href="src/Control-Lens-Traversal.html#unsafePartsOf%27" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:holesOf" class="def">holesOf</a> :: <span class="keyword">forall</span> p s t a. <a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p =&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> p a a) s t a a -&gt; s -&gt; [<a href="Control-Lens-Internal-Context.html#t:Pretext">Pretext</a> p a a t] <a href="src/Control-Lens-Traversal.html#holesOf" class="link">Source</a></p><div class="doc"><p>The one-level version of <code><a href="Control-Lens-Plated.html#v:contextsOf">contextsOf</a></code>. This extracts a list of the immediate children according to a given <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> as editable contexts.</p><p>Given a context you can use <code><a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad-Store-Class.html#v:pos">pos</a></code> to see the values, <code><a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad-Store-Class.html#v:peek">peek</a></code> at what the structure would be like with an edited result, or simply <code><a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#v:extract">extract</a></code> the original structure.</p><pre>propChildren l x = childrenOf l x <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#v:-61--61-">==</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/GHC-OldList.html#v:map">map</a></code> <code><a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad-Store-Class.html#v:pos">pos</a></code> (<code><a href="Control-Lens-Traversal.html#v:holesOf">holesOf</a></code> l x)
propId l x = <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Foldable.html#v:all">all</a></code> (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Eq.html#v:-61--61-">==</a></code> x) [<code><a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#v:extract">extract</a></code> w | w &lt;- <code><a href="Control-Lens-Traversal.html#v:holesOf">holesOf</a></code> l x]
</pre><pre><code><a href="Control-Lens-Traversal.html#v:holesOf">holesOf</a></code> :: <code><a href="Control-Lens-Type.html#t:Iso-39-">Iso'</a></code> s a                -&gt; s -&gt; [<code><a href="Control-Lens-Internal-Context.html#t:Pretext-39-">Pretext'</a></code> (-&gt;) a s]
<code><a href="Control-Lens-Traversal.html#v:holesOf">holesOf</a></code> :: <code><a href="Control-Lens-Type.html#t:Lens-39-">Lens'</a></code> s a               -&gt; s -&gt; [<code><a href="Control-Lens-Internal-Context.html#t:Pretext-39-">Pretext'</a></code> (-&gt;) a s]
<code><a href="Control-Lens-Traversal.html#v:holesOf">holesOf</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> s a          -&gt; s -&gt; [<code><a href="Control-Lens-Internal-Context.html#t:Pretext-39-">Pretext'</a></code> (-&gt;) a s]
<code><a href="Control-Lens-Traversal.html#v:holesOf">holesOf</a></code> :: <code><a href="Control-Lens-Type.html#t:IndexedLens-39-">IndexedLens'</a></code> i s a      -&gt; s -&gt; [<code><a href="Control-Lens-Internal-Context.html#t:Pretext-39-">Pretext'</a></code> (<code><a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a></code> i) a s]
<code><a href="Control-Lens-Traversal.html#v:holesOf">holesOf</a></code> :: <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a></code> i s a -&gt; s -&gt; [<code><a href="Control-Lens-Internal-Context.html#t:Pretext-39-">Pretext'</a></code> (<code><a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a></code> i) a s]
</pre></div></div><div class="top"><p class="src"><a name="v:singular" class="def">singular</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f) =&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> p f s t a a -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t a a <a href="src/Control-Lens-Traversal.html#singular" class="link">Source</a></p><div class="doc"><p>This converts a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> that you &quot;know&quot; will target one or more elements to a <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code>. It can
 also be used to transform a non-empty <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> into a <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code>.</p><p>The resulting <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> or <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> will be partial if the supplied <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> returns
 no results.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>[1,2,3] ^. singular _head
</code></strong>1
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>[] ^. singular _head
</code></strong>*** Exception: singular: empty traversal
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>Left 4 ^. singular _Left
</code></strong>4
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>[1..10] ^. singular (ix 7)
</code></strong>8
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>[] &amp; singular traverse .~ 0
</code></strong>[]
</pre><pre><code><a href="Control-Lens-Traversal.html#v:singular">singular</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a a          -&gt; <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t a a
<code><a href="Control-Lens-Traversal.html#v:singular">singular</a></code> :: <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a                   -&gt; <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:singular">singular</a></code> :: <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s t a a -&gt; <code><a href="Control-Lens-Type.html#t:IndexedLens">IndexedLens</a></code> i s t a a
<code><a href="Control-Lens-Traversal.html#v:singular">singular</a></code> :: <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i s a          -&gt; <code><a href="Control-Lens-Type.html#t:IndexedGetter">IndexedGetter</a></code> i s a
</pre></div></div><div class="top"><p class="src"><a name="v:unsafeSingular" class="def">unsafeSingular</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f) =&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> p f s t a b -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t a b <a href="src/Control-Lens-Traversal.html#unsafeSingular" class="link">Source</a></p><div class="doc"><p>This converts a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> that you &quot;know&quot; will target only one element to a <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code>. It can also be
 used to transform a <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> into a <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code>.</p><p>The resulting <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> or <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> will be partial if the <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> targets nothing
 or more than one element.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>[] &amp; unsafeSingular traverse .~ 0
</code></strong>*** Exception: unsafeSingular: empty traversal
</pre><pre><code><a href="Control-Lens-Traversal.html#v:unsafeSingular">unsafeSingular</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b          -&gt; <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t a b
<code><a href="Control-Lens-Traversal.html#v:unsafeSingular">unsafeSingular</a></code> :: <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a                   -&gt; <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:unsafeSingular">unsafeSingular</a></code> :: <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s t a b -&gt; <code><a href="Control-Lens-Type.html#t:IndexedLens">IndexedLens</a></code> i s t a b
<code><a href="Control-Lens-Traversal.html#v:unsafeSingular">unsafeSingular</a></code> :: <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i s a          -&gt; <code><a href="Control-Lens-Type.html#t:IndexedGetter">IndexedGetter</a></code> i s a
</pre></div></div><h1 id="g:5">Common Traversals</h1><div class="top"><p class="src"><span class="keyword">class</span> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> t, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Foldable.html#t:Foldable">Foldable</a> t) =&gt; <a name="t:Traversable" class="def">Traversable</a> t <span class="keyword">where</span></p><div class="doc"><p>Functors representing data structures that can be traversed from
 left to right.</p><p>A definition of <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code> must satisfy the following laws:</p><dl><dt><em>naturality</em></dt><dd><code>t . <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code> f = <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code> (t . f)</code>
   for every applicative transformation <code>t</code></dd><dt><em>identity</em></dt><dd><code><code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code> Identity = Identity</code></dd><dt><em>composition</em></dt><dd><code><code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code> (Compose . <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#v:fmap">fmap</a></code> g . f) = Compose . <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#v:fmap">fmap</a></code> (<code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code> g) . <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code> f</code></dd></dl><p>A definition of <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:sequenceA">sequenceA</a></code> must satisfy the following laws:</p><dl><dt><em>naturality</em></dt><dd><code>t . <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:sequenceA">sequenceA</a></code> = <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:sequenceA">sequenceA</a></code> . <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#v:fmap">fmap</a></code> t</code>
   for every applicative transformation <code>t</code></dd><dt><em>identity</em></dt><dd><code><code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:sequenceA">sequenceA</a></code> . <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#v:fmap">fmap</a></code> Identity = Identity</code></dd><dt><em>composition</em></dt><dd><code><code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:sequenceA">sequenceA</a></code> . <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#v:fmap">fmap</a></code> Compose = Compose . <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#v:fmap">fmap</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:sequenceA">sequenceA</a></code> . <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:sequenceA">sequenceA</a></code></code></dd></dl><p>where an <em>applicative transformation</em> is a function</p><pre>t :: (Applicative f, Applicative g) =&gt; f a -&gt; g a</pre><p>preserving the <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code> operations, i.e.</p><ul><li><pre>t (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#v:pure">pure</a></code> x) = <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#v:pure">pure</a></code> x</pre></li><li><pre>t (x <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#v:-60--42--62-">&lt;*&gt;</a></code> y) = t x <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#v:-60--42--62-">&lt;*&gt;</a></code> t y</pre></li></ul><p>and the identity functor <code>Identity</code> and composition of functors <code>Compose</code>
 are defined as</p><pre>  newtype Identity a = Identity a

  instance Functor Identity where
    fmap f (Identity x) = Identity (f x)

  instance Applicative Indentity where
    pure x = Identity x
    Identity f &lt;*&gt; Identity x = Identity (f x)

  newtype Compose f g a = Compose (f (g a))

  instance (Functor f, Functor g) =&gt; Functor (Compose f g) where
    fmap f (Compose x) = Compose (fmap (fmap f) x)

  instance (Applicative f, Applicative g) =&gt; Applicative (Compose f g) where
    pure x = Compose (pure (pure x))
    Compose f &lt;*&gt; Compose x = Compose ((&lt;*&gt;) &lt;$&gt; f &lt;*&gt; x)</pre><p>(The naturality law is implied by parametricity.)</p><p>Instances are similar to <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code>, e.g. given a data type</p><pre>data Tree a = Empty | Leaf a | Node (Tree a) a (Tree a)</pre><p>a suitable instance would be</p><pre>instance Traversable Tree where
   traverse f Empty = pure Empty
   traverse f (Leaf x) = Leaf &lt;$&gt; f x
   traverse f (Node l k r) = Node &lt;$&gt; traverse f l &lt;*&gt; f k &lt;*&gt; traverse f r</pre><p>This is suitable even for abstract types, as the laws for <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#v:-60--42--62-">&lt;*&gt;</a></code>
 imply a form of associativity.</p><p>The superclass instances should satisfy the following:</p><ul><li>In the <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code> instance, <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#v:fmap">fmap</a></code> should be equivalent to traversal
    with the identity applicative functor (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:fmapDefault">fmapDefault</a></code>).</li><li>In the <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Foldable.html#t:Foldable">Foldable</a></code> instance, <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Foldable.html#v:foldMap">foldMap</a></code> should be
    equivalent to traversal with a constant applicative functor
    (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:foldMapDefault">foldMapDefault</a></code>).</li></ul></div><div class="subs minimal"><p class="caption">Minimal complete definition</p><p class="src"><a href="Control-Lens-Traversal.html#v:traverse">traverse</a> | <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:sequenceA">sequenceA</a></p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:traverse" class="def">traverse</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f =&gt; (a -&gt; f b) -&gt; t a -&gt; f (t b)</p><div class="doc"><p>Map each element of a structure to an action, evaluate these actions
 from left to right, and collect the results. For a version that ignores
 the results see <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Foldable.html#v:traverse_">traverse_</a></code>.</p></div></div><div class="subs instances"><p id="control.i:Traversable" class="caption collapser" onclick="toggleSection('i:Traversable')">Instances</p><div id="section.i:Traversable" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> []</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> <a href="Control-Lens-Setter.html#t:Identity">Identity</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Maybe.html#t:Maybe">Maybe</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> Digit</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> Node</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> Elem</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> FingerTree</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-IntMap-Strict.html#t:IntMap">IntMap</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Tree.html#t:Tree">Tree</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Sequence.html#t:Seq">Seq</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Sequence.html#t:ViewL">ViewL</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Sequence.html#t:ViewR">ViewR</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> <a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-Semigroup.html#t:Min">Min</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> <a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-Semigroup.html#t:Max">Max</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> <a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-Semigroup.html#t:First">First</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> <a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-Semigroup.html#t:Last">Last</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> <a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-Semigroup.html#t:Option">Option</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> <a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-List-NonEmpty.html#t:NonEmpty">NonEmpty</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> <a href="file:///usr/share/doc/libghc-vector-doc/html/Data-Vector.html#t:Vector">Vector</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> <a href="Control-Lens-Internal-Deque.html#t:Deque">Deque</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Either.html#t:Either">Either</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/ghc-prim-0.4.0.0/GHC-Tuple.html#t:-40--44--41-">(,)</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ix.html#t:Ix">Ix</a> i =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/array-0.5.1.0/Data-Array.html#t:Array">Array</a> i)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="Control-Lens-Getter.html#t:Const">Const</a> m)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Proxy.html#t:Proxy">Proxy</a> *)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/libghc-bifunctors-doc/html/Data-Bitraversable.html#t:Bitraversable">Bitraversable</a> p =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-bifunctors-doc/html/Data-Bifunctor-Join.html#t:Join">Join</a> p)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad-Trans-Identity.html#t:IdentityT">IdentityT</a> f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Map-Lazy.html#t:Map">Map</a> k)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-free-doc/html/Control-Comonad-Cofree.html#t:Cofree">Cofree</a> f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-free-doc/html/Control-Monad-Free.html#t:Free">Free</a> f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-kan-extensions-doc/html/Data-Functor-Yoneda.html#t:Yoneda">Yoneda</a> f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-List.html#t:ListT">ListT</a> f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-Semigroup.html#t:Arg">Arg</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Reverse.html#t:Reverse">Reverse</a> f)</span></td><td class="doc"><p>Traverse from right to left.</p></td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Applicative-Backwards.html#t:Backwards">Backwards</a> f)</span></td><td class="doc"><p>Derived instance.</p></td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Monad-Trans-Maybe.html#t:MaybeT">MaybeT</a> f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Applicative-Lift.html#t:Lift">Lift</a> f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Constant.html#t:Constant">Constant</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-unordered-containers-doc/html/Data-HashMap-Strict.html#t:HashMap">HashMap</a> k)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="Control-Lens-Internal-Level.html#t:Level">Level</a> i)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> g =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-bifunctors-doc/html/Data-Bifunctor-Joker.html#t:Joker">Joker</a> g a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-bifunctors-doc/html/Data-Bifunctor-Clown.html#t:Clown">Clown</a> f a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f, <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> g) =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Data-Functor-Coproduct.html#t:Coproduct">Coproduct</a> f g)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> w =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad-Trans-Env.html#t:EnvT">EnvT</a> e w)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-free-doc/html/Control-Comonad-Trans-Cofree.html#t:CofreeF">CofreeF</a> f a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f, <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> w) =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-free-doc/html/Control-Comonad-Trans-Cofree.html#t:CofreeT">CofreeT</a> f w)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-free-doc/html/Control-Monad-Trans-Free.html#t:FreeF">FreeF</a> f a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> m, <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f) =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-free-doc/html/Control-Monad-Trans-Free.html#t:FreeT">FreeT</a> f m)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-Except.html#t:ExceptT">ExceptT</a> e f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-Error.html#t:ErrorT">ErrorT</a> e f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-Writer-Lazy.html#t:WriterT">WriterT</a> w f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-Writer-Strict.html#t:WriterT">WriterT</a> w f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f, <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> g) =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a> f g)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-profunctors-doc/html/Data-Profunctor.html#t:Forget">Forget</a> r a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/libghc-tagged-doc/html/Data-Tagged.html#t:Tagged">Tagged</a> k s)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f, <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> g) =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Sum.html#t:Sum">Sum</a> f g)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f, <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> g) =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Product.html#t:Product">Product</a> f g)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="Control-Lens-Internal-Getter.html#t:AlongsideRight">AlongsideRight</a> f a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="Control-Lens-Internal-Getter.html#t:AlongsideLeft">AlongsideLeft</a> f b)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> (<a href="Control-Lens-Internal-Magma.html#t:Magma">Magma</a> i t b)</span></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">class</span> (<a href="file:///usr/share/doc/libghc-semigroupoids-doc/html/Data-Semigroup-Foldable-Class.html#t:Foldable1">Foldable1</a> t, <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> t) =&gt; <a name="t:Traversable1" class="def">Traversable1</a> t <span class="keyword">where</span></p><div class="subs minimal"><p class="caption">Minimal complete definition</p><p class="src"><a href="Control-Lens-Traversal.html#v:traverse1">traverse1</a> | <a href="file:///usr/share/doc/libghc-semigroupoids-doc/html/Data-Semigroup-Traversable-Class.html#v:sequence1">sequence1</a></p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:traverse1" class="def">traverse1</a> :: <a href="file:///usr/share/doc/libghc-semigroupoids-doc/html/Data-Functor-Apply.html#t:Apply">Apply</a> f =&gt; (a -&gt; f b) -&gt; t a -&gt; f (t b)</p></div><div class="subs instances"><p id="control.i:Traversable1" class="caption collapser" onclick="toggleSection('i:Traversable1')">Instances</p><div id="section.i:Traversable1" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> <a href="Control-Lens-Setter.html#t:Identity">Identity</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Tree.html#t:Tree">Tree</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> <a href="file:///usr/share/doc/libghc-semigroups-doc/html/Data-List-NonEmpty.html#t:NonEmpty">NonEmpty</a></span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/ghc-prim-0.4.0.0/GHC-Tuple.html#t:-40--44--41-">(,)</a> a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/libghc-semigroupoids-doc/html/Data-Semigroup-Traversable-Class.html#t:Bitraversable1">Bitraversable1</a> p =&gt; <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> (<a href="file:///usr/share/doc/libghc-bifunctors-doc/html/Data-Bifunctor-Join.html#t:Join">Join</a> p)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad-Trans-Identity.html#t:IdentityT">IdentityT</a> f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> (<a href="file:///usr/share/doc/libghc-free-doc/html/Control-Comonad-Cofree.html#t:Cofree">Cofree</a> f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> (<a href="file:///usr/share/doc/libghc-free-doc/html/Control-Monad-Free.html#t:Free">Free</a> f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> (<a href="file:///usr/share/doc/libghc-kan-extensions-doc/html/Data-Functor-Yoneda.html#t:Yoneda">Yoneda</a> f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Reverse.html#t:Reverse">Reverse</a> f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Applicative-Backwards.html#t:Backwards">Backwards</a> f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Applicative-Lift.html#t:Lift">Lift</a> f)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> g =&gt; <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> (<a href="file:///usr/share/doc/libghc-bifunctors-doc/html/Data-Bifunctor-Joker.html#t:Joker">Joker</a> g a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> f, <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> g) =&gt; <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> (<a href="file:///usr/share/doc/libghc-comonad-doc/html/Data-Functor-Coproduct.html#t:Coproduct">Coproduct</a> f g)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> f, <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> g) =&gt; <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Compose.html#t:Compose">Compose</a> f g)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> f, <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> g) =&gt; <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Sum.html#t:Sum">Sum</a> f g)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">(<a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> f, <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> g) =&gt; <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Data-Functor-Product.html#t:Product">Product</a> f g)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> (<a href="Control-Lens-Internal-Getter.html#t:AlongsideRight">AlongsideRight</a> f a)</span></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> f =&gt; <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> (<a href="Control-Lens-Internal-Getter.html#t:AlongsideLeft">AlongsideLeft</a> f b)</span></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:both" class="def">both</a> :: <a href="file:///usr/share/doc/libghc-bifunctors-doc/html/Data-Bitraversable.html#t:Bitraversable">Bitraversable</a> r =&gt; <a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a> (r a a) (r b b) a b <a href="src/Control-Lens-Traversal.html#both" class="link">Source</a></p><div class="doc"><p>Traverse both parts of a <code><a href="file:///usr/share/doc/libghc-bifunctors-doc/html/Data-Bitraversable.html#t:Bitraversable">Bitraversable</a></code> container with matching types.</p><p>Usually that type will be a pair.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>(1,2) &amp; both *~ 10
</code></strong>(10,20)
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>over both length (&quot;hello&quot;,&quot;world&quot;)
</code></strong>(5,5)
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>(&quot;hello&quot;,&quot;world&quot;)^.both
</code></strong>&quot;helloworld&quot;
</pre><pre><code><a href="Control-Lens-Traversal.html#v:both">both</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> (a, a)       (b, b)       a b
<code><a href="Control-Lens-Traversal.html#v:both">both</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Either.html#t:Either">Either</a></code> a a) (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Either.html#t:Either">Either</a></code> b b) a b
</pre></div></div><div class="top"><p class="src"><a name="v:beside" class="def">beside</a> :: (<a href="file:///usr/share/doc/libghc-profunctors-doc/html/Data-Profunctor-Rep.html#t:Representable">Representable</a> q, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> (<a href="file:///usr/share/doc/libghc-profunctors-doc/html/Data-Profunctor-Rep.html#t:Rep">Rep</a> q), <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f, <a href="file:///usr/share/doc/libghc-bifunctors-doc/html/Data-Bitraversable.html#t:Bitraversable">Bitraversable</a> r) =&gt; <a href="Control-Lens-Type.html#t:Optical">Optical</a> p q f s t a b -&gt; <a href="Control-Lens-Type.html#t:Optical">Optical</a> p q f s' t' a b -&gt; <a href="Control-Lens-Type.html#t:Optical">Optical</a> p q f (r s s') (r t t') a b <a href="src/Control-Lens-Traversal.html#beside" class="link">Source</a></p><div class="doc"><p>Apply a different <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> or <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> to each side of a <code><a href="file:///usr/share/doc/libghc-bifunctors-doc/html/Data-Bitraversable.html#t:Bitraversable">Bitraversable</a></code> container.</p><pre><code><a href="Control-Lens-Traversal.html#v:beside">beside</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b                -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s' t' a b                -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> (r s s') (r t t') a b
<code><a href="Control-Lens-Traversal.html#v:beside">beside</a></code> :: <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s t a b       -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s' t' a b       -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i (r s s') (r t t') a b
<code><a href="Control-Lens-Traversal.html#v:beside">beside</a></code> :: <code><a href="Control-Lens-Type.html#t:IndexPreservingTraversal">IndexPreservingTraversal</a></code> s t a b -&gt; <code><a href="Control-Lens-Type.html#t:IndexPreservingTraversal">IndexPreservingTraversal</a></code> s' t' a b -&gt; <code><a href="Control-Lens-Type.html#t:IndexPreservingTraversal">IndexPreservingTraversal</a></code> (r s s') (r t t') a b
</pre><pre><code><a href="Control-Lens-Traversal.html#v:beside">beside</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b                -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s' t' a b                -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> (s,s') (t,t') a b
<code><a href="Control-Lens-Traversal.html#v:beside">beside</a></code> :: <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t a b                     -&gt; <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s' t' a b                     -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> (s,s') (t,t') a b
<code><a href="Control-Lens-Traversal.html#v:beside">beside</a></code> :: <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a                         -&gt; <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s' a                          -&gt; <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> (s,s') a
<code><a href="Control-Lens-Traversal.html#v:beside">beside</a></code> :: <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> s a                       -&gt; <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> s' a                        -&gt; <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> (s,s') a
</pre><pre><code><a href="Control-Lens-Traversal.html#v:beside">beside</a></code> :: <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s t a b       -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s' t' a b       -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i (s,s') (t,t') a b
<code><a href="Control-Lens-Traversal.html#v:beside">beside</a></code> :: <code><a href="Control-Lens-Type.html#t:IndexedLens">IndexedLens</a></code> i s t a b            -&gt; <code><a href="Control-Lens-Type.html#t:IndexedLens">IndexedLens</a></code> i s' t' a b            -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i (s,s') (t,t') a b
<code><a href="Control-Lens-Traversal.html#v:beside">beside</a></code> :: <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i s a                -&gt; <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i s' a                 -&gt; <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i (s,s') a
<code><a href="Control-Lens-Traversal.html#v:beside">beside</a></code> :: <code><a href="Control-Lens-Type.html#t:IndexedGetter">IndexedGetter</a></code> i s a              -&gt; <code><a href="Control-Lens-Type.html#t:IndexedGetter">IndexedGetter</a></code> i s' a               -&gt; <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i (s,s') a
</pre><pre><code><a href="Control-Lens-Traversal.html#v:beside">beside</a></code> :: <code><a href="Control-Lens-Type.html#t:IndexPreservingTraversal">IndexPreservingTraversal</a></code> s t a b -&gt; <code><a href="Control-Lens-Type.html#t:IndexPreservingTraversal">IndexPreservingTraversal</a></code> s' t' a b -&gt; <code><a href="Control-Lens-Type.html#t:IndexPreservingTraversal">IndexPreservingTraversal</a></code> (s,s') (t,t') a b
<code><a href="Control-Lens-Traversal.html#v:beside">beside</a></code> :: <code><a href="Control-Lens-Type.html#t:IndexPreservingLens">IndexPreservingLens</a></code> s t a b      -&gt; <code><a href="Control-Lens-Type.html#t:IndexPreservingLens">IndexPreservingLens</a></code> s' t' a b      -&gt; <code><a href="Control-Lens-Type.html#t:IndexPreservingTraversal">IndexPreservingTraversal</a></code> (s,s') (t,t') a b
<code><a href="Control-Lens-Traversal.html#v:beside">beside</a></code> :: <code><a href="Control-Lens-Type.html#t:IndexPreservingFold">IndexPreservingFold</a></code> s a          -&gt; <code><a href="Control-Lens-Type.html#t:IndexPreservingFold">IndexPreservingFold</a></code> s' a           -&gt; <code><a href="Control-Lens-Type.html#t:IndexPreservingFold">IndexPreservingFold</a></code> (s,s') a
<code><a href="Control-Lens-Traversal.html#v:beside">beside</a></code> :: <code><a href="Control-Lens-Type.html#t:IndexPreservingGetter">IndexPreservingGetter</a></code> s a        -&gt; <code><a href="Control-Lens-Type.html#t:IndexPreservingGetter">IndexPreservingGetter</a></code> s' a         -&gt; <code><a href="Control-Lens-Type.html#t:IndexPreservingFold">IndexPreservingFold</a></code> (s,s') a
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>(&quot;hello&quot;,[&quot;world&quot;,&quot;!!!&quot;])^..beside id traverse
</code></strong>[&quot;hello&quot;,&quot;world&quot;,&quot;!!!&quot;]
</pre></div></div><div class="top"><p class="src"><a name="v:taking" class="def">taking</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> p f s t a a -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t a a <a href="src/Control-Lens-Traversal.html#taking" class="link">Source</a></p><div class="doc"><p>Visit the first <em>n</em> targets of a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code>, <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code>, <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> or <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code>.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>[(&quot;hello&quot;,&quot;world&quot;),(&quot;!!!&quot;,&quot;!!!&quot;)]^.. taking 2 (traverse.both)
</code></strong>[&quot;hello&quot;,&quot;world&quot;]
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>timingOut $ [1..] ^.. taking 3 traverse
</code></strong>[1,2,3]
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>over (taking 5 traverse) succ &quot;hello world&quot;
</code></strong>&quot;ifmmp world&quot;
</pre><pre><code><a href="Control-Lens-Traversal.html#v:taking">taking</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> s a                   -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:taking">taking</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Type.html#t:Lens-39-">Lens'</a></code> s a                        -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:taking">taking</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Type.html#t:Iso-39-">Iso'</a></code> s a                         -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:taking">taking</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Type.html#t:Prism-39-">Prism'</a></code> s a                       -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:taking">taking</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> s a                       -&gt; <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:taking">taking</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a                         -&gt; <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:taking">taking</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a></code> i s a          -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a></code> i s a
<code><a href="Control-Lens-Traversal.html#v:taking">taking</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Type.html#t:IndexedLens-39-">IndexedLens'</a></code> i s a               -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a></code> i s a
<code><a href="Control-Lens-Traversal.html#v:taking">taking</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Type.html#t:IndexedGetter">IndexedGetter</a></code> i s a              -&gt; <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i s a
<code><a href="Control-Lens-Traversal.html#v:taking">taking</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i s a                -&gt; <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i s a
</pre></div></div><div class="top"><p class="src"><a name="v:dropping" class="def">dropping</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p (<a href="Control-Lens-Internal-Indexed.html#t:Indexing">Indexing</a> f) s t a a -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t a a <a href="src/Control-Lens-Traversal.html#dropping" class="link">Source</a></p><div class="doc"><p>Visit all but the first <em>n</em> targets of a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code>, <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code>, <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> or <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code>.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>(&quot;hello&quot;,&quot;world&quot;) ^? dropping 1 both
</code></strong>Just &quot;world&quot;
</pre><p>Dropping works on infinite traversals as well:</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>[1..] ^? dropping 1 folded
</code></strong>Just 2
</pre><pre><code><a href="Control-Lens-Traversal.html#v:dropping">dropping</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> s a                   -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:dropping">dropping</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Type.html#t:Lens-39-">Lens'</a></code> s a                        -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:dropping">dropping</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Type.html#t:Iso-39-">Iso'</a></code> s a                         -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:dropping">dropping</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Type.html#t:Prism-39-">Prism'</a></code> s a                       -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:dropping">dropping</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> s a                       -&gt; <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:dropping">dropping</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a                         -&gt; <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:dropping">dropping</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a></code> i s a          -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a></code> i s a
<code><a href="Control-Lens-Traversal.html#v:dropping">dropping</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Type.html#t:IndexedLens-39-">IndexedLens'</a></code> i s a               -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a></code> i s a
<code><a href="Control-Lens-Traversal.html#v:dropping">dropping</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Type.html#t:IndexedGetter">IndexedGetter</a></code> i s a              -&gt; <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i s a
<code><a href="Control-Lens-Traversal.html#v:dropping">dropping</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i s a                -&gt; <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i s a
</pre></div></div><div class="top"><p class="src"><a name="v:failing" class="def">failing</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f) =&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> p f s t a b -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t a b -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t a b <span class="fixity">infixl 5</span><span class="rightedge"></span> <a href="src/Control-Lens-Traversal.html#failing" class="link">Source</a></p><div class="doc"><p>Try the first <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> (or <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code>), falling back on the second <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> (or <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code>) if it returns no entries.</p><p>This is only a valid <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> if the second <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> is disjoint from the result of the first or returns
 exactly the same results. These conditions are trivially met when given a <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code>, <code><a href="Control-Lens-Type.html#t:Iso">Iso</a></code>, <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code>, <code><a href="Control-Lens-Type.html#t:Prism">Prism</a></code> or &quot;affine&quot; Traversal -- one that
 has 0 or 1 target.</p><p>Mutatis mutandis for <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code>.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>[0,1,2,3] ^? failing (ix 1) (ix 2)
</code></strong>Just 1
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>[0,1,2,3] ^? failing (ix 42) (ix 2)
</code></strong>Just 2
</pre><pre><code><a href="Control-Lens-Traversal.html#v:failing">failing</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b
<code><a href="Control-Lens-Traversal.html#v:failing">failing</a></code> :: <code><a href="Control-Lens-Type.html#t:Prism">Prism</a></code> s t a b     -&gt; <code><a href="Control-Lens-Type.html#t:Prism">Prism</a></code> s t a b     -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b
<code><a href="Control-Lens-Traversal.html#v:failing">failing</a></code> :: <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a          -&gt; <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a          -&gt; <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a
</pre><p>These cases are also supported, trivially, but are boring, because the left hand side always succeeds.</p><pre><code><a href="Control-Lens-Traversal.html#v:failing">failing</a></code> :: <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> s t a b      -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b
<code><a href="Control-Lens-Traversal.html#v:failing">failing</a></code> :: <code><a href="Control-Lens-Type.html#t:Iso">Iso</a></code> s t a b       -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b
<code><a href="Control-Lens-Traversal.html#v:failing">failing</a></code> :: <code><a href="Control-Lens-Type.html#t:Equality">Equality</a></code> s t a b  -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b
<code><a href="Control-Lens-Traversal.html#v:failing">failing</a></code> :: <code><a href="Control-Lens-Type.html#t:Getter">Getter</a></code> s a        -&gt; <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a          -&gt; <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a
</pre><p>If both of the inputs are indexed, the result is also indexed, so you can apply this to a pair of indexed
 traversals or indexed folds, obtaining an indexed traversal or indexed fold.</p><pre><code><a href="Control-Lens-Traversal.html#v:failing">failing</a></code> :: <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s t a b -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s t a b -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s t a b
<code><a href="Control-Lens-Traversal.html#v:failing">failing</a></code> :: <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i s a          -&gt; <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i s a          -&gt; <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i s a
</pre><p>These cases are also supported, trivially, but are boring, because the left hand side always succeeds.</p><pre><code><a href="Control-Lens-Traversal.html#v:failing">failing</a></code> :: <code><a href="Control-Lens-Type.html#t:IndexedLens">IndexedLens</a></code> i s t a b      -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s t a b -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s t a b
<code><a href="Control-Lens-Traversal.html#v:failing">failing</a></code> :: <code><a href="Control-Lens-Type.html#t:IndexedGetter">IndexedGetter</a></code> i s a        -&gt; <code><a href="Control-Lens-Type.html#t:IndexedGetter">IndexedGetter</a></code> i s a        -&gt; <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i s a
</pre></div></div><div class="top"><p class="src"><a name="v:deepOf" class="def">deepOf</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f) =&gt; <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> f s t s t -&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> p f s t a b -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t a b <a href="src/Control-Lens-Traversal.html#deepOf" class="link">Source</a></p><div class="doc"><p>Try the second traversal. If it returns no entries, try again with all entries from the first traversal, recursively.</p><pre><code><a href="Control-Lens-Traversal.html#v:deepOf">deepOf</a></code> :: <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s s          -&gt; <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a                   -&gt; <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:deepOf">deepOf</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> s s    -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> s a             -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:deepOf">deepOf</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t s t -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b          -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b
<code><a href="Control-Lens-Traversal.html#v:deepOf">deepOf</a></code> :: <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s s          -&gt; <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i s a          -&gt; <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> i s a
<code><a href="Control-Lens-Traversal.html#v:deepOf">deepOf</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t s t -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s t a b -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s t a b
</pre></div></div><h1 id="g:6">Indexed Traversals</h1><h2 id="g:7">Common</h2><div class="top"><p class="src"><a name="v:ignored" class="def">ignored</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f =&gt; pafb -&gt; s -&gt; f s <a href="src/Control-Lens-Traversal.html#ignored" class="link">Source</a></p><div class="doc"><p>This is the trivial empty <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code>.</p><pre><code><a href="Control-Lens-Traversal.html#v:ignored">ignored</a></code> :: <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s s a b
</pre><pre><code><a href="Control-Lens-Traversal.html#v:ignored">ignored</a></code> &#8801; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Function.html#v:const">const</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#v:pure">pure</a></code>
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>6 &amp; ignored %~ absurd
</code></strong>6
</pre></div></div><div class="top"><p class="src"><span class="keyword">class</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> k =&gt; <a name="t:TraverseMin" class="def">TraverseMin</a> k m | m -&gt; k <span class="keyword">where</span> <a href="src/Control-Lens-Traversal.html#TraverseMin" class="link">Source</a></p><div class="doc"><p>Allows <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> the value at the smallest index.</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:traverseMin" class="def">traverseMin</a> :: <a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a> k (m v) v <a href="src/Control-Lens-Traversal.html#traverseMin" class="link">Source</a></p><div class="doc"><p><code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> of the element with the smallest index.</p></div></div><div class="subs instances"><p id="control.i:TraverseMin" class="caption collapser" onclick="toggleSection('i:TraverseMin')">Instances</p><div id="section.i:TraverseMin" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:TraverseMin">TraverseMin</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-IntMap-Strict.html#t:IntMap">IntMap</a></span> <a href="src/Control-Lens-Traversal.html#line-1074" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> k =&gt; <a href="Control-Lens-Traversal.html#t:TraverseMin">TraverseMin</a> k (<a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Map-Lazy.html#t:Map">Map</a> k)</span> <a href="src/Control-Lens-Traversal.html#line-1084" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">class</span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> k =&gt; <a name="t:TraverseMax" class="def">TraverseMax</a> k m | m -&gt; k <span class="keyword">where</span> <a href="src/Control-Lens-Traversal.html#TraverseMax" class="link">Source</a></p><div class="doc"><p>Allows <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> of the value at the largest index.</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:traverseMax" class="def">traverseMax</a> :: <a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a> k (m v) v <a href="src/Control-Lens-Traversal.html#traverseMax" class="link">Source</a></p><div class="doc"><p><code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> of the element at the largest index.</p></div></div><div class="subs instances"><p id="control.i:TraverseMax" class="caption collapser" onclick="toggleSection('i:TraverseMax')">Instances</p><div id="section.i:TraverseMax" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Traversal.html#t:TraverseMax">TraverseMax</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-IntMap-Strict.html#t:IntMap">IntMap</a></span> <a href="src/Control-Lens-Traversal.html#line-1095" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Ord.html#t:Ord">Ord</a> k =&gt; <a href="Control-Lens-Traversal.html#t:TraverseMax">TraverseMax</a> k (<a href="file:///usr/share/doc/ghc-doc/html/libraries/containers-0.5.6.2/Data-Map-Lazy.html#t:Map">Map</a> k)</span> <a href="src/Control-Lens-Traversal.html#line-1105" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:traversed" class="def">traversed</a> :: <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> (f a) (f b) a b <a href="src/Control-Lens-Traversal.html#traversed" class="link">Source</a></p><div class="doc"><p>Traverse any <code><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a></code> container. This is an <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> that is indexed by ordinal position.</p></div></div><div class="top"><p class="src"><a name="v:traversed1" class="def">traversed1</a> :: <a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a> f =&gt; <a href="Control-Lens-Traversal.html#t:IndexedTraversal1">IndexedTraversal1</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> (f a) (f b) a b <a href="src/Control-Lens-Traversal.html#traversed1" class="link">Source</a></p><div class="doc"><p>Traverse any <code><a href="Control-Lens-Traversal.html#t:Traversable1">Traversable1</a></code> container. This is an <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal1">IndexedTraversal1</a></code> that is indexed by ordinal position.</p></div></div><div class="top"><p class="src"><a name="v:traversed64" class="def">traversed64</a> :: <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> f =&gt; <a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int64">Int64</a> (f a) (f b) a b <a href="src/Control-Lens-Traversal.html#traversed64" class="link">Source</a></p><div class="doc"><p>Traverse any <code><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a></code> container. This is an <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> that is indexed by ordinal position.</p></div></div><div class="top"><p class="src"><a name="v:elementOf" class="def">elementOf</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f =&gt; <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexing">Indexing</a> f) s t a a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Control-Lens-Type.html#t:IndexedLensLike">IndexedLensLike</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> f s t a a <a href="src/Control-Lens-Traversal.html#elementOf" class="link">Source</a></p><div class="doc"><p>Traverse the <em>nth</em> <code><a href="Control-Lens-Traversal.html#v:elementOf">elementOf</a></code> a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code>, <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> or
 <code><a href="Control-Lens-Type.html#t:Iso">Iso</a></code> if it exists.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>[[1],[3,4]] &amp; elementOf (traverse.traverse) 1 .~ 5
</code></strong>[[1],[5,4]]
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>[[1],[3,4]] ^? elementOf (folded.folded) 1
</code></strong>Just 3
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>timingOut $ ['a'..] ^?! elementOf folded 5
</code></strong>'f'
</pre><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>timingOut $ take 10 $ elementOf traverse 3 .~ 16 $ [0..]
</code></strong>[0,1,2,16,4,5,6,7,8,9]
</pre><pre><code><a href="Control-Lens-Traversal.html#v:elementOf">elementOf</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> s a -&gt; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:elementOf">elementOf</a></code> :: <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a       -&gt; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> s a
</pre></div></div><div class="top"><p class="src"><a name="v:element" class="def">element</a> :: <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> t =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> (t a) a <a href="src/Control-Lens-Traversal.html#element" class="link">Source</a></p><div class="doc"><p>Traverse the <em>nth</em> element of a <code><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a></code> container.</p><pre><code><a href="Control-Lens-Traversal.html#v:element">element</a></code> &#8801; <code><a href="Control-Lens-Traversal.html#v:elementOf">elementOf</a></code> <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code>
</pre></div></div><div class="top"><p class="src"><a name="v:elementsOf" class="def">elementsOf</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f =&gt; <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexing">Indexing</a> f) s t a a -&gt; (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; <a href="Control-Lens-Type.html#t:IndexedLensLike">IndexedLensLike</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> f s t a a <a href="src/Control-Lens-Traversal.html#elementsOf" class="link">Source</a></p><div class="doc"><p>Traverse (or fold) selected elements of a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> (or <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code>) where their ordinal positions match a predicate.</p><pre><code><a href="Control-Lens-Traversal.html#v:elementsOf">elementsOf</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal-39-">Traversal'</a></code> s a -&gt; (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a></code>) -&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> s a
<code><a href="Control-Lens-Traversal.html#v:elementsOf">elementsOf</a></code> :: <code><a href="Control-Lens-Type.html#t:Fold">Fold</a></code> s a       -&gt; (<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> -&gt; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a></code>) -&gt; <code><a href="Control-Lens-Type.html#t:IndexedFold">IndexedFold</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a></code> s a
</pre></div></div><div class="top"><p class="src"><a name="v:elements" class="def">elements</a> :: <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> t =&gt; (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; <a href="Control-Lens-Traversal.html#t:IndexedTraversal-39-">IndexedTraversal'</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Int.html#t:Int">Int</a> (t a) a <a href="src/Control-Lens-Traversal.html#elements" class="link">Source</a></p><div class="doc"><p>Traverse elements of a <code><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a></code> container where their ordinal positions match a predicate.</p><pre><code><a href="Control-Lens-Traversal.html#v:elements">elements</a></code> &#8801; <code><a href="Control-Lens-Traversal.html#v:elementsOf">elementsOf</a></code> <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code>
</pre></div></div><h2 id="g:8">Combinators</h2><div class="top"><p class="src"><a name="v:ipartsOf" class="def">ipartsOf</a> :: <span class="keyword">forall</span> i p f s t a. (<a href="Control-Lens-Internal-Indexed.html#t:Indexable">Indexable</a> [i] p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f) =&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) f s t a a -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t [a] [a] <a href="src/Control-Lens-Traversal.html#ipartsOf" class="link">Source</a></p><div class="doc"><p>An indexed version of <code><a href="Control-Lens-Traversal.html#v:partsOf">partsOf</a></code> that receives the entire list of indices as its index.</p></div></div><div class="top"><p class="src"><a name="v:ipartsOf-39-" class="def">ipartsOf'</a> :: <span class="keyword">forall</span> i p f s t a. (<a href="Control-Lens-Internal-Indexed.html#t:Indexable">Indexable</a> [i] p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f) =&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) (<a href="Control-Lens-Traversal.html#t:Bazaar-39-">Bazaar'</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) a) s t a a -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t [a] [a] <a href="src/Control-Lens-Traversal.html#ipartsOf%27" class="link">Source</a></p><div class="doc"><p>A type-restricted version of <code><a href="Control-Lens-Traversal.html#v:ipartsOf">ipartsOf</a></code> that can only be used with an <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code>.</p></div></div><div class="top"><p class="src"><a name="v:iunsafePartsOf" class="def">iunsafePartsOf</a> :: <span class="keyword">forall</span> i p f s t a b. (<a href="Control-Lens-Internal-Indexed.html#t:Indexable">Indexable</a> [i] p, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> f) =&gt; <a href="Control-Lens-Traversal.html#t:Traversing">Traversing</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) f s t a b -&gt; <a href="Control-Lens-Type.html#t:Over">Over</a> p f s t [a] [b] <a href="src/Control-Lens-Traversal.html#iunsafePartsOf" class="link">Source</a></p><div class="doc"><p>An indexed version of <code><a href="Control-Lens-Traversal.html#v:unsafePartsOf">unsafePartsOf</a></code> that receives the entire list of indices as its index.</p></div></div><div class="top"><p class="src"><a name="v:iunsafePartsOf-39-" class="def">iunsafePartsOf'</a> :: <span class="keyword">forall</span> i s t a b. <a href="Control-Lens-Type.html#t:Over">Over</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) a b) s t a b -&gt; <a href="Control-Lens-Type.html#t:IndexedLens">IndexedLens</a> [i] s t [a] [b] <a href="src/Control-Lens-Traversal.html#iunsafePartsOf%27" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:itraverseOf" class="def">itraverseOf</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i a (f b) -&gt; s -&gt; f t) -&gt; (i -&gt; a -&gt; f b) -&gt; s -&gt; f t <a href="src/Control-Lens-Traversal.html#itraverseOf" class="link">Source</a></p><div class="doc"><p>Traversal with an index.</p><p><em>NB:</em> When you don't need access to the index then you can just apply your <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code>
 directly as a function!</p><pre><code><a href="Control-Lens-Traversal.html#v:itraverseOf">itraverseOf</a></code> &#8801; <code><a href="Control-Lens-Indexed.html#v:withIndex">withIndex</a></code>
<code><a href="Control-Lens-Traversal.html#v:traverseOf">traverseOf</a></code> l = <code><a href="Control-Lens-Traversal.html#v:itraverseOf">itraverseOf</a></code> l <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Function.html#v:const">const</a></code> = <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:id">id</a></code>
</pre><pre><code><a href="Control-Lens-Traversal.html#v:itraverseOf">itraverseOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code> f     =&gt; <code><a href="Control-Lens-Type.html#t:IndexedLens">IndexedLens</a></code> i s t a b       -&gt; (i -&gt; a -&gt; f b) -&gt; s -&gt; f t
<code><a href="Control-Lens-Traversal.html#v:itraverseOf">itraverseOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code> f =&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s t a b  -&gt; (i -&gt; a -&gt; f b) -&gt; s -&gt; f t
<code><a href="Control-Lens-Traversal.html#v:itraverseOf">itraverseOf</a></code> :: <code>Apply</code> f       =&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal1">IndexedTraversal1</a></code> i s t a b -&gt; (i -&gt; a -&gt; f b) -&gt; s -&gt; f t
</pre></div></div><div class="top"><p class="src"><a name="v:iforOf" class="def">iforOf</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i a (f b) -&gt; s -&gt; f t) -&gt; s -&gt; (i -&gt; a -&gt; f b) -&gt; f t <a href="src/Control-Lens-Traversal.html#iforOf" class="link">Source</a></p><div class="doc"><p>Traverse with an index (and the arguments flipped).</p><pre><code><a href="Control-Lens-Traversal.html#v:forOf">forOf</a></code> l a &#8801; <code><a href="Control-Lens-Traversal.html#v:iforOf">iforOf</a></code> l a <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Function.html#v:const">const</a></code>
<code><a href="Control-Lens-Traversal.html#v:iforOf">iforOf</a></code> &#8801; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Function.html#v:flip">flip</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code> <code><a href="Control-Lens-Traversal.html#v:itraverseOf">itraverseOf</a></code>
</pre><pre><code><a href="Control-Lens-Traversal.html#v:iforOf">iforOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a></code> f     =&gt; <code><a href="Control-Lens-Type.html#t:IndexedLens">IndexedLens</a></code> i s t a b       -&gt; s -&gt; (i -&gt; a -&gt; f b) -&gt; f t
<code><a href="Control-Lens-Traversal.html#v:iforOf">iforOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code> f =&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s t a b  -&gt; s -&gt; (i -&gt; a -&gt; f b) -&gt; f t
<code><a href="Control-Lens-Traversal.html#v:iforOf">iforOf</a></code> :: <code>Apply</code> f       =&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal1">IndexedTraversal1</a></code> i s t a b -&gt; s -&gt; (i -&gt; a -&gt; f b) -&gt; f t
</pre></div></div><div class="top"><p class="src"><a name="v:imapMOf" class="def">imapMOf</a> :: <a href="Control-Lens-Type.html#t:Over">Over</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:WrappedMonad">WrappedMonad</a> m) s t a b -&gt; (i -&gt; a -&gt; m b) -&gt; s -&gt; m t <a href="src/Control-Lens-Traversal.html#imapMOf" class="link">Source</a></p><div class="doc"><p>Map each element of a structure targeted by a <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> to a monadic action,
 evaluate these actions from left to right, and collect the results, with access
 its position.</p><p>When you don't need access to the index <code><a href="Control-Lens-Traversal.html#v:mapMOf">mapMOf</a></code> is more liberal in what it can accept.</p><pre><code><a href="Control-Lens-Traversal.html#v:mapMOf">mapMOf</a></code> l &#8801; <code><a href="Control-Lens-Traversal.html#v:imapMOf">imapMOf</a></code> l <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Function.html#v:const">const</a></code>
</pre><pre><code><a href="Control-Lens-Traversal.html#v:imapMOf">imapMOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a></code> m =&gt; <code><a href="Control-Lens-Type.html#t:IndexedLens">IndexedLens</a></code>       i s t a b -&gt; (i -&gt; a -&gt; m b) -&gt; s -&gt; m t
<code><a href="Control-Lens-Traversal.html#v:imapMOf">imapMOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a></code> m =&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code>  i s t a b -&gt; (i -&gt; a -&gt; m b) -&gt; s -&gt; m t
<code><a href="Control-Lens-Traversal.html#v:imapMOf">imapMOf</a></code> :: <code>Bind</code>  m =&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal1">IndexedTraversal1</a></code> i s t a b -&gt; (i -&gt; a -&gt; m b) -&gt; s -&gt; m t
</pre></div></div><div class="top"><p class="src"><a name="v:iforMOf" class="def">iforMOf</a> :: (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i a (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:WrappedMonad">WrappedMonad</a> m b) -&gt; s -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:WrappedMonad">WrappedMonad</a> m t) -&gt; s -&gt; (i -&gt; a -&gt; m b) -&gt; m t <a href="src/Control-Lens-Traversal.html#iforMOf" class="link">Source</a></p><div class="doc"><p>Map each element of a structure targeted by a <code><a href="Control-Lens-Type.html#t:Lens">Lens</a></code> to a monadic action,
 evaluate these actions from left to right, and collect the results, with access
 its position (and the arguments flipped).</p><pre><code><a href="Control-Lens-Traversal.html#v:forMOf">forMOf</a></code> l a &#8801; <code><a href="Control-Lens-Traversal.html#v:iforMOf">iforMOf</a></code> l a <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Function.html#v:const">const</a></code>
<code><a href="Control-Lens-Traversal.html#v:iforMOf">iforMOf</a></code> &#8801; <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Function.html#v:flip">flip</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code> <code><a href="Control-Lens-Traversal.html#v:imapMOf">imapMOf</a></code>
</pre><pre><code><a href="Control-Lens-Traversal.html#v:iforMOf">iforMOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a></code> m =&gt; <code><a href="Control-Lens-Type.html#t:IndexedLens">IndexedLens</a></code> i s t a b      -&gt; s -&gt; (i -&gt; a -&gt; m b) -&gt; m t
<code><a href="Control-Lens-Traversal.html#v:iforMOf">iforMOf</a></code> :: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Monad.html#t:Monad">Monad</a></code> m =&gt; <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s t a b -&gt; s -&gt; (i -&gt; a -&gt; m b) -&gt; m t
</pre></div></div><div class="top"><p class="src"><a name="v:imapAccumROf" class="def">imapAccumROf</a> :: <a href="Control-Lens-Type.html#t:Over">Over</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) (<a href="file:///usr/share/doc/ghc-doc/html/libraries/transformers-0.4.2.0/Control-Applicative-Backwards.html#t:Backwards">Backwards</a> (<a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-State-Lazy.html#t:State">State</a> acc)) s t a b -&gt; (i -&gt; acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t) <a href="src/Control-Lens-Traversal.html#imapAccumROf" class="link">Source</a></p><div class="doc"><p>Generalizes <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:mapAccumR">mapAccumR</a></code> to an arbitrary <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> with access to the index.</p><p><code><a href="Control-Lens-Traversal.html#v:imapAccumROf">imapAccumROf</a></code> accumulates state from right to left.</p><pre><code><a href="Control-Lens-Traversal.html#v:mapAccumROf">mapAccumROf</a></code> l &#8801; <code><a href="Control-Lens-Traversal.html#v:imapAccumROf">imapAccumROf</a></code> l <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Function.html#v:const">const</a></code>
</pre><pre><code><a href="Control-Lens-Traversal.html#v:imapAccumROf">imapAccumROf</a></code> :: <code><a href="Control-Lens-Type.html#t:IndexedLens">IndexedLens</a></code> i s t a b      -&gt; (i -&gt; acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t)
<code><a href="Control-Lens-Traversal.html#v:imapAccumROf">imapAccumROf</a></code> :: <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s t a b -&gt; (i -&gt; acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t)
</pre></div></div><div class="top"><p class="src"><a name="v:imapAccumLOf" class="def">imapAccumLOf</a> :: <a href="Control-Lens-Type.html#t:Over">Over</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) (<a href="file:///usr/share/doc/libghc-mtl-doc/html/Control-Monad-State-Lazy.html#t:State">State</a> acc) s t a b -&gt; (i -&gt; acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t) <a href="src/Control-Lens-Traversal.html#imapAccumLOf" class="link">Source</a></p><div class="doc"><p>Generalizes <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:mapAccumL">mapAccumL</a></code> to an arbitrary <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> with access to the index.</p><p><code><a href="Control-Lens-Traversal.html#v:imapAccumLOf">imapAccumLOf</a></code> accumulates state from left to right.</p><pre><code><a href="Control-Lens-Traversal.html#v:mapAccumLOf">mapAccumLOf</a></code> l &#8801; <code><a href="Control-Lens-Traversal.html#v:imapAccumLOf">imapAccumLOf</a></code> l <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Category.html#v:.">.</a></code> <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Function.html#v:const">const</a></code>
</pre><pre><code><a href="Control-Lens-Traversal.html#v:imapAccumLOf">imapAccumLOf</a></code> :: <code><a href="Control-Lens-Type.html#t:IndexedLens">IndexedLens</a></code> i s t a b      -&gt; (i -&gt; acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t)
<code><a href="Control-Lens-Traversal.html#v:imapAccumLOf">imapAccumLOf</a></code> :: <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> i s t a b -&gt; (i -&gt; acc -&gt; a -&gt; (acc, b)) -&gt; acc -&gt; s -&gt; (acc, t)
</pre></div></div><h1 id="g:9">Reflection</h1><div class="top"><p class="src"><a name="v:traverseBy" class="def">traverseBy</a> :: <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> t =&gt; (<span class="keyword">forall</span> x. x -&gt; f x) -&gt; (<span class="keyword">forall</span> x y. f (x -&gt; y) -&gt; f x -&gt; f y) -&gt; (a -&gt; f b) -&gt; t a -&gt; f (t b)</p><div class="doc"><p>Traverse a container using its <code><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a></code> instance using
 explicitly provided <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code> operations. This is like <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code>
 where the <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code> instance can be manually specified.</p></div></div><div class="top"><p class="src"><a name="v:traverseByOf" class="def">traverseByOf</a> :: <a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a> s t a b -&gt; (<span class="keyword">forall</span> x. x -&gt; f x) -&gt; (<span class="keyword">forall</span> x y. f (x -&gt; y) -&gt; f x -&gt; f y) -&gt; (a -&gt; f b) -&gt; s -&gt; f t <a href="src/Control-Lens-Traversal.html#traverseByOf" class="link">Source</a></p><div class="doc"><p>Traverse a container using a specified <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code>.</p><p>This is like <code><a href="Control-Lens-Traversal.html#v:traverseBy">traverseBy</a></code> where the <code><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a></code> instance can be specified by any <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code></p><pre><code><a href="Control-Lens-Traversal.html#v:traverseByOf">traverseByOf</a></code> <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code> &#8801; <code><a href="Control-Lens-Traversal.html#v:traverseBy">traverseBy</a></code>
</pre></div></div><div class="top"><p class="src"><a name="v:sequenceBy" class="def">sequenceBy</a> :: <a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a> t =&gt; (<span class="keyword">forall</span> x. x -&gt; f x) -&gt; (<span class="keyword">forall</span> x y. f (x -&gt; y) -&gt; f x -&gt; f y) -&gt; t (f a) -&gt; f (t a)</p><div class="doc"><p>Sequence a container using its <code><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a></code> instance using
 explicitly provided <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code> operations. This is like <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Traversable.html#v:sequence">sequence</a></code>
 where the <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code> instance can be manually specified.</p></div></div><div class="top"><p class="src"><a name="v:sequenceByOf" class="def">sequenceByOf</a> :: <a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a> s t (f b) b -&gt; (<span class="keyword">forall</span> x. x -&gt; f x) -&gt; (<span class="keyword">forall</span> x y. f (x -&gt; y) -&gt; f x -&gt; f y) -&gt; s -&gt; f t <a href="src/Control-Lens-Traversal.html#sequenceByOf" class="link">Source</a></p><div class="doc"><p>Sequence a container using a specified <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code>.</p><p>This is like <code><a href="Control-Lens-Traversal.html#v:traverseBy">traverseBy</a></code> where the <code><a href="Control-Lens-Traversal.html#t:Traversable">Traversable</a></code> instance can be specified by any <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code></p><pre><code><a href="Control-Lens-Traversal.html#v:sequenceByOf">sequenceByOf</a></code> <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code> &#8801; <code><a href="Control-Lens-Traversal.html#v:sequenceBy">sequenceBy</a></code>
</pre></div></div><h1 id="g:10">Implementation Details</h1><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:Bazaar" class="def">Bazaar</a> p a b t <a href="src/Control-Lens-Internal-Bazaar.html#Bazaar" class="link">Source</a></p><div class="doc"><p>This is used to characterize a <code><a href="Control-Lens-Traversal.html#v:Traversal">Traversal</a></code>.</p><p>a.k.a. indexed Cartesian store comonad, indexed Kleene store comonad, or an indexed <code>FunList</code>.</p><p><a href="http://twanvl.nl/blog/haskell/non-regular1">http://twanvl.nl/blog/haskell/non-regular1</a></p><p>A <code><a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a></code> is like a <code><a href="Control-Lens-Traversal.html#v:Traversal">Traversal</a></code> that has already been applied to some structure.</p><p>Where a <code><code><a href="Control-Lens-Internal-Context.html#t:Context">Context</a></code> a b t</code> holds an <code>a</code> and a function from <code>b</code> to
 <code>t</code>, a <code><code><a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a></code> a b t</code> holds <code>N</code> <code>a</code>s and a function from <code>N</code>
 <code>b</code>s to <code>t</code>, (where <code>N</code> might be infinite).</p><p>Mnemonically, a <code><a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a></code> holds many stores and you can easily add more.</p><p>This is a final encoding of <code><a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a></code>.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Bazaar" class="def">Bazaar</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:runBazaar" class="def">runBazaar</a> :: <span class="keyword">forall</span> f. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f =&gt; p a (f b) -&gt; f t</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Bazaar" class="caption collapser" onclick="toggleSection('i:Bazaar')">Instances</p><div id="section.i:Bazaar" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/libghc-profunctors-doc/html/Data-Profunctor-Rep.html#t:Corepresentable">Corepresentable</a> p =&gt; <a href="Control-Lens-Internal-Context.html#t:Sellable">Sellable</a> p (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> p)</span> <a href="src/Control-Lens-Internal-Bazaar.html#line-98" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Iso.html#t:Profunctor">Profunctor</a> p =&gt; <a href="Control-Lens-Internal-Bazaar.html#t:Bizarre">Bizarre</a> p (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> p)</span> <a href="src/Control-Lens-Internal-Bazaar.html#line-102" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p =&gt; <a href="Control-Lens-Internal-Context.html#t:IndexedComonad">IndexedComonad</a> (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> p)</span> <a href="src/Control-Lens-Internal-Bazaar.html#line-92" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Internal-Context.html#t:IndexedFunctor">IndexedFunctor</a> (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> p)</span> <a href="src/Control-Lens-Internal-Bazaar.html#line-88" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> p a b)</span> <a href="src/Control-Lens-Internal-Bazaar.html#line-106" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> p a b)</span> <a href="src/Control-Lens-Internal-Bazaar.html#line-114" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">((~) * a b, <a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p) =&gt; <a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Comonad">Comonad</a> (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> p a b)</span> <a href="src/Control-Lens-Internal-Bazaar.html#line-120" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">((~) * a b, <a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p) =&gt; <a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:ComonadApply">ComonadApply</a> (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> p a b)</span> <a href="src/Control-Lens-Internal-Bazaar.html#line-126" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/libghc-semigroupoids-doc/html/Data-Functor-Apply.html#t:Apply">Apply</a> (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> p a b)</span> <a href="src/Control-Lens-Internal-Bazaar.html#line-110" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Bazaar-39-" class="def">Bazaar'</a> p a = <a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> p a a <a href="src/Control-Lens-Internal-Bazaar.html#Bazaar%27" class="link">Source</a></p><div class="doc"><p>This alias is helpful when it comes to reducing repetition in type signatures.</p><pre>type <code><a href="Control-Lens-Traversal.html#t:Bazaar-39-">Bazaar'</a></code> p a t = <code><a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a></code> p a a t
</pre></div></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a name="t:Bazaar1" class="def">Bazaar1</a> p a b t <a href="src/Control-Lens-Internal-Bazaar.html#Bazaar1" class="link">Source</a></p><div class="doc"><p>This is used to characterize a <code><a href="Control-Lens-Traversal.html#v:Traversal">Traversal</a></code>.</p><p>a.k.a. indexed Cartesian store comonad, indexed Kleene store comonad, or an indexed <code>FunList</code>.</p><p><a href="http://twanvl.nl/blog/haskell/non-regular1">http://twanvl.nl/blog/haskell/non-regular1</a></p><p>A <code><a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a></code> is like a <code><a href="Control-Lens-Traversal.html#v:Traversal">Traversal</a></code> that has already been applied to some structure.</p><p>Where a <code><code><a href="Control-Lens-Internal-Context.html#t:Context">Context</a></code> a b t</code> holds an <code>a</code> and a function from <code>b</code> to
 <code>t</code>, a <code><code><a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a></code> a b t</code> holds <code>N</code> <code>a</code>s and a function from <code>N</code>
 <code>b</code>s to <code>t</code>, (where <code>N</code> might be infinite).</p><p>Mnemonically, a <code><a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a></code> holds many stores and you can easily add more.</p><p>This is a final encoding of <code><a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a></code>.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Bazaar1" class="def">Bazaar1</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:runBazaar1" class="def">runBazaar1</a> :: <span class="keyword">forall</span> f. <a href="file:///usr/share/doc/libghc-semigroupoids-doc/html/Data-Functor-Apply.html#t:Apply">Apply</a> f =&gt; p a (f b) -&gt; f t</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Bazaar1" class="caption collapser" onclick="toggleSection('i:Bazaar1')">Instances</p><div id="section.i:Bazaar1" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/libghc-profunctors-doc/html/Data-Profunctor-Rep.html#t:Corepresentable">Corepresentable</a> p =&gt; <a href="Control-Lens-Internal-Context.html#t:Sellable">Sellable</a> p (<a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a> p)</span> <a href="src/Control-Lens-Internal-Bazaar.html#line-254" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Iso.html#t:Profunctor">Profunctor</a> p =&gt; <a href="Control-Lens-Internal-Bazaar.html#t:Bizarre1">Bizarre1</a> p (<a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a> p)</span> <a href="src/Control-Lens-Internal-Bazaar.html#line-258" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p =&gt; <a href="Control-Lens-Internal-Context.html#t:IndexedComonad">IndexedComonad</a> (<a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a> p)</span> <a href="src/Control-Lens-Internal-Bazaar.html#line-248" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="Control-Lens-Internal-Context.html#t:IndexedFunctor">IndexedFunctor</a> (<a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a> p)</span> <a href="src/Control-Lens-Internal-Bazaar.html#line-244" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#t:Functor">Functor</a> (<a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a> p a b)</span> <a href="src/Control-Lens-Internal-Bazaar.html#line-262" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">((~) * a b, <a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p) =&gt; <a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:Comonad">Comonad</a> (<a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a> p a b)</span> <a href="src/Control-Lens-Internal-Bazaar.html#line-270" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left">((~) * a b, <a href="Control-Lens-Internal-Indexed.html#t:Conjoined">Conjoined</a> p) =&gt; <a href="file:///usr/share/doc/libghc-comonad-doc/html/Control-Comonad.html#t:ComonadApply">ComonadApply</a> (<a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a> p a b)</span> <a href="src/Control-Lens-Internal-Bazaar.html#line-276" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src clearfix"><span class="inst-left"><a href="file:///usr/share/doc/libghc-semigroupoids-doc/html/Data-Functor-Apply.html#t:Apply">Apply</a> (<a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a> p a b)</span> <a href="src/Control-Lens-Internal-Bazaar.html#line-266" class="link">Source</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Bazaar1-39-" class="def">Bazaar1'</a> p a = <a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a> p a a <a href="src/Control-Lens-Internal-Bazaar.html#Bazaar1%27" class="link">Source</a></p><div class="doc"><p>This alias is helpful when it comes to reducing repetition in type signatures.</p><pre>type <code><a href="Control-Lens-Traversal.html#t:Bazaar1-39-">Bazaar1'</a></code> p a t = <code><a href="Control-Lens-Traversal.html#t:Bazaar1">Bazaar1</a></code> p a a t
</pre></div></div><div class="top"><p class="src"><a name="v:loci" class="def">loci</a> :: <a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a> (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> (-&gt;) a c s) (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> (-&gt;) b c s) a b <a href="src/Control-Lens-Traversal.html#loci" class="link">Source</a></p><div class="doc"><p>This <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> allows you to <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code> the individual stores in a <code><a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a></code>.</p></div></div><div class="top"><p class="src"><a name="v:iloci" class="def">iloci</a> :: <a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a> i (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) a c s) (<a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a> (<a href="Control-Lens-Internal-Indexed.html#t:Indexed">Indexed</a> i) b c s) a b <a href="src/Control-Lens-Traversal.html#iloci" class="link">Source</a></p><div class="doc"><p>This <code><a href="Control-Lens-Traversal.html#t:IndexedTraversal">IndexedTraversal</a></code> allows you to <code><a href="Control-Lens-Traversal.html#v:traverse">traverse</a></code> the individual stores in
 a <code><a href="Control-Lens-Traversal.html#t:Bazaar">Bazaar</a></code> with access to their indices.</p></div></div><h1 id="g:11">Fusion</h1><div class="top"><p class="src"><a name="v:confusing" class="def">confusing</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a> f =&gt; <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> (<a href="file:///usr/share/doc/libghc-kan-extensions-doc/html/Data-Functor-Kan-Rift.html#t:Rift">Rift</a> (<a href="file:///usr/share/doc/libghc-kan-extensions-doc/html/Data-Functor-Yoneda.html#t:Yoneda">Yoneda</a> f) (<a href="file:///usr/share/doc/libghc-kan-extensions-doc/html/Data-Functor-Yoneda.html#t:Yoneda">Yoneda</a> f)) s t a b -&gt; <a href="Control-Lens-Type.html#t:LensLike">LensLike</a> f s t a b <a href="src/Control-Lens-Traversal.html#confusing" class="link">Source</a></p><div class="doc"><p><a href="Fuse.html">Fuse</a> a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> by reassociating all of the <code>\&lt;*\&gt;</code> operations to the
 left and fusing all of the <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#v:fmap">fmap</a></code> calls into one. This is particularly
 useful when constructing a <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> using operations from GHC.Generics.</p><p>Given a pair of <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code>s <code>foo</code> and <code>bar</code>,</p><pre><code><a href="Control-Lens-Traversal.html#v:confusing">confusing</a></code> (foo.bar) = foo.bar
</pre><p>However, <code>foo</code> and <code>bar</code> are each going to use the <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Control-Applicative.html#t:Applicative">Applicative</a></code> they are given.</p><p><code><a href="Control-Lens-Traversal.html#v:confusing">confusing</a></code> exploits the <code><a href="file:///usr/share/doc/libghc-kan-extensions-doc/html/Data-Functor-Yoneda.html#t:Yoneda">Yoneda</a></code> lemma to merge their separate uses of <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#v:fmap">fmap</a></code> into a single <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.8.2.0/Data-Functor.html#v:fmap">fmap</a></code>.
 and it further exploits an interesting property of the right Kan lift (or <code><a href="file:///usr/share/doc/libghc-kan-extensions-doc/html/Data-Functor-Kan-Rift.html#t:Rift">Rift</a></code>) to left associate
 all of the uses of '(<a href="*">*</a>)' to make it possible to fuse together more fmaps.</p><p>This is particularly effective when the choice of functor <code>f</code> is unknown at compile
 time or when the <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> <code>foo.bar</code> in the above description is recursive or complex
 enough to prevent inlining.</p><p><code><a href="Control-Lens-Lens.html#v:fusing">fusing</a></code> is a version of this combinator suitable for fusing lenses.</p><pre><code><a href="Control-Lens-Traversal.html#v:confusing">confusing</a></code> :: <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b -&gt; <code><a href="Control-Lens-Traversal.html#t:Traversal">Traversal</a></code> s t a b
</pre></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>