This file is indexed.

/usr/share/doc/haskell98-report/html/haskell98-report-html/list.html is in haskell98-report 20080907-4.

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
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
<title>The Haskell 98 Library Report: List Utilities</title>
<body bgcolor="#ffffff"> <i>The Haskell 98 Report</i><br> <a href="index.html">top</a> | <a href="array.html">back</a> | <a href="maybe.html">next</a> | <a href="index98.html">contents</a> | <a href="prelude-index.html">function index</a> <br><hr>
<a name="sect17"></a>
<h2>17<tt>&nbsp;&nbsp;</tt>List Utilities</h2><p>
<table border=2 cellpadding=3>
<tr><td>
<tt><br>
module&nbsp;List&nbsp;(&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;elemIndex,&nbsp;elemIndices,<br>
&nbsp;&nbsp;&nbsp;&nbsp;find,&nbsp;findIndex,&nbsp;findIndices,<br>
&nbsp;&nbsp;&nbsp;&nbsp;nub,&nbsp;nubBy,&nbsp;delete,&nbsp;deleteBy,&nbsp;(\\),&nbsp;deleteFirstsBy,<br>
&nbsp;&nbsp;&nbsp;&nbsp;union,&nbsp;unionBy,&nbsp;intersect,&nbsp;intersectBy,<br>
&nbsp;&nbsp;&nbsp;&nbsp;intersperse,&nbsp;transpose,&nbsp;partition,&nbsp;group,&nbsp;groupBy,<br>
&nbsp;&nbsp;&nbsp;&nbsp;inits,&nbsp;tails,&nbsp;isPrefixOf,&nbsp;isSuffixOf,<br>
&nbsp;&nbsp;&nbsp;&nbsp;mapAccumL,&nbsp;mapAccumR,<br>
&nbsp;&nbsp;&nbsp;&nbsp;sort,&nbsp;sortBy,&nbsp;insert,&nbsp;insertBy,&nbsp;maximumBy,&nbsp;minimumBy,<br>
&nbsp;&nbsp;&nbsp;&nbsp;genericLength,&nbsp;genericTake,&nbsp;genericDrop,<br>
&nbsp;&nbsp;&nbsp;&nbsp;genericSplitAt,&nbsp;genericIndex,&nbsp;genericReplicate,<br>
&nbsp;&nbsp;&nbsp;&nbsp;zip4,&nbsp;zip5,&nbsp;zip6,&nbsp;zip7,<br>
&nbsp;&nbsp;&nbsp;&nbsp;zipWith4,&nbsp;zipWith5,&nbsp;zipWith6,&nbsp;zipWith7,<br>
&nbsp;&nbsp;&nbsp;&nbsp;unzip4,&nbsp;unzip5,&nbsp;unzip6,&nbsp;unzip7,&nbsp;unfoldr,<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;...and&nbsp;what&nbsp;the&nbsp;Prelude&nbsp;exports<br>
&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;[]((:),&nbsp;[]),	--&nbsp;This&nbsp;is&nbsp;built-in&nbsp;syntax<br>
&nbsp;&nbsp;&nbsp;&nbsp;map,&nbsp;(++),&nbsp;concat,&nbsp;filter,<br>
&nbsp;&nbsp;&nbsp;&nbsp;head,&nbsp;last,&nbsp;tail,&nbsp;init,&nbsp;null,&nbsp;length,&nbsp;(!!),<br>
&nbsp;&nbsp;&nbsp;&nbsp;foldl,&nbsp;foldl1,&nbsp;scanl,&nbsp;scanl1,&nbsp;foldr,&nbsp;foldr1,&nbsp;scanr,&nbsp;scanr1,<br>
&nbsp;&nbsp;&nbsp;&nbsp;iterate,&nbsp;repeat,&nbsp;replicate,&nbsp;cycle,<br>
&nbsp;&nbsp;&nbsp;&nbsp;take,&nbsp;drop,&nbsp;splitAt,&nbsp;takeWhile,&nbsp;dropWhile,&nbsp;span,&nbsp;break,<br>
&nbsp;&nbsp;&nbsp;&nbsp;lines,&nbsp;words,&nbsp;unlines,&nbsp;unwords,&nbsp;reverse,&nbsp;and,&nbsp;or,<br>
&nbsp;&nbsp;&nbsp;&nbsp;any,&nbsp;all,&nbsp;elem,&nbsp;notElem,&nbsp;lookup,<br>
&nbsp;&nbsp;&nbsp;&nbsp;sum,&nbsp;product,&nbsp;maximum,&nbsp;minimum,&nbsp;concatMap,&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;zip,&nbsp;zip3,&nbsp;zipWith,&nbsp;zipWith3,&nbsp;unzip,&nbsp;unzip3<br>
&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;where<br>
<br>
infix&nbsp;5&nbsp;\\<br>
<br>
elemIndex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;a&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;Maybe&nbsp;Int<br>
elemIndices&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;a&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[Int]<br>
find&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;Maybe&nbsp;a<br>
findIndex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;Maybe&nbsp;Int<br>
findIndices&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[Int]<br>
nub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
nubBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
delete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;a&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
deleteBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
(\\)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
deleteFirstsBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
union&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
unionBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
<br>

</tt></td></tr></table>

<table border=2 cellpadding=3>
<tr><td>
<tt><br>
intersect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
intersectBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
intersperse&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;a&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
transpose&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[[a]]&nbsp;-&gt;&nbsp;[[a]]<br>
partition&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;([a],[a])<br>
group&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[[a]]<br>
groupBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[[a]]<br>
inits&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[a]&nbsp;-&gt;&nbsp;[[a]]&nbsp;<br>
tails&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[a]&nbsp;-&gt;&nbsp;[[a]]&nbsp;<br>
isPrefixOf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;Bool<br>
isSuffixOf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;Bool<br>
mapAccumL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;b&nbsp;-&gt;&nbsp;(a,&nbsp;c))&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;(a,&nbsp;[c])<br>
mapAccumR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;b&nbsp;-&gt;&nbsp;(a,&nbsp;c))&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;(a,&nbsp;[c])<br>
unfoldr		&nbsp;::&nbsp;(b&nbsp;-&gt;&nbsp;Maybe&nbsp;(a,b))&nbsp;-&gt;&nbsp;b&nbsp;-&gt;&nbsp;[a]<br>
sort&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Ord&nbsp;a&nbsp;=&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
sortBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Ordering)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
insert		&nbsp;::&nbsp;Ord&nbsp;a&nbsp;=&gt;&nbsp;a&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
insertBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Ordering)&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
maximumBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Ordering)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;a<br>
minimumBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Ordering)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;a<br>
genericLength&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Integral&nbsp;a&nbsp;=&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;a<br>
genericTake	&nbsp;::&nbsp;Integral&nbsp;a&nbsp;=&gt;&nbsp;a&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;[b]<br>
genericDrop	&nbsp;::&nbsp;Integral&nbsp;a&nbsp;=&gt;&nbsp;a&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;[b]<br>
genericSplitAt	&nbsp;::&nbsp;Integral&nbsp;a&nbsp;=&gt;&nbsp;a&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;([b],[b])<br>
genericIndex	&nbsp;::&nbsp;Integral&nbsp;a&nbsp;=&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;b<br>
genericReplicate&nbsp;::&nbsp;Integral&nbsp;a&nbsp;=&gt;&nbsp;a&nbsp;-&gt;&nbsp;b&nbsp;-&gt;&nbsp;[b]<br>
<br>
zip4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[a]&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;[c]&nbsp;-&gt;&nbsp;[d]&nbsp;-&gt;&nbsp;[(a,b,c,d)]<br>
zip5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[a]&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;[c]&nbsp;-&gt;&nbsp;[d]&nbsp;-&gt;&nbsp;[e]&nbsp;-&gt;&nbsp;[(a,b,c,d,e)]<br>
zip6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[a]&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;[c]&nbsp;-&gt;&nbsp;[d]&nbsp;-&gt;&nbsp;[e]&nbsp;-&gt;&nbsp;[f]&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;[(a,b,c,d,e,f)]<br>
zip7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[a]&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;[c]&nbsp;-&gt;&nbsp;[d]&nbsp;-&gt;&nbsp;[e]&nbsp;-&gt;&nbsp;[f]&nbsp;-&gt;&nbsp;[g]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;[(a,b,c,d,e,f,g)]<br>
zipWith4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a-&gt;b-&gt;c-&gt;d-&gt;e)&nbsp;-&gt;&nbsp;[a]-&gt;[b]-&gt;[c]-&gt;[d]-&gt;[e]<br>
zipWith5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a-&gt;b-&gt;c-&gt;d-&gt;e-&gt;f)&nbsp;-&gt;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[a]-&gt;[b]-&gt;[c]-&gt;[d]-&gt;[e]-&gt;[f]<br>
zipWith6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a-&gt;b-&gt;c-&gt;d-&gt;e-&gt;f-&gt;g)&nbsp;-&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[a]-&gt;[b]-&gt;[c]-&gt;[d]-&gt;[e]-&gt;[f]-&gt;[g]<br>
zipWith7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a-&gt;b-&gt;c-&gt;d-&gt;e-&gt;f-&gt;g-&gt;h)&nbsp;-&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[a]-&gt;[b]-&gt;[c]-&gt;[d]-&gt;[e]-&gt;[f]-&gt;[g]-&gt;[h]<br>
unzip4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[(a,b,c,d)]&nbsp;-&gt;&nbsp;([a],[b],[c],[d])<br>
unzip5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[(a,b,c,d,e)]&nbsp;-&gt;&nbsp;([a],[b],[c],[d],[e])<br>
unzip6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[(a,b,c,d,e,f)]&nbsp;-&gt;&nbsp;([a],[b],[c],[d],[e],[f])<br>
unzip7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[(a,b,c,d,e,f,g)]&nbsp;-&gt;&nbsp;([a],[b],[c],[d],[e],[f],[g])<br>

</tt></td></tr></table>
<p>
This library defines some lesser-used operations over lists.<p>
<a name="sect17.1"></a>
<h3>17.1<tt>&nbsp;&nbsp;</tt>Indexing lists</h3><p>
<UL><LI><tt>elemIndex&nbsp;val&nbsp;list</tt> returns the index of
the first occurrence, if any, of <tt>val</tt>  
in <tt>list</tt> as <tt>Just&nbsp;index</tt>.  <tt>Nothing</tt> is returned if <tt>not&nbsp;(val&nbsp;`elem`&nbsp;list)</tt>.<p>
<LI><tt>elemIndices&nbsp;val&nbsp;list</tt> returns an
in-order list of indices, giving the occurrences of <tt>val</tt> in <tt>list</tt>.<p>
<LI><tt>find</tt> 
returns the first element of a list that satisfies a predicate,
or Nothing, if there is no such element.
<tt>findIndex</tt> returns the corresponding index.
<tt>findIndices</tt> returns a list of all such indices.
</UL><p>
<a name="sect17.2"></a>
<h3>17.2<tt>&nbsp;&nbsp;</tt>"Set" operations</h3><p>
There are a number of "set" operations defined over the <tt>List</tt> type.
<tt>nub</tt> (meaning "essence") removes duplicates elements from a list.
<tt>delete</tt>, <tt>(\\)</tt>, <tt>union</tt> and <tt>intersect</tt> (and their <tt>By</tt> variants) 
preserve the invariant that their result
does not contain duplicates, provided that their first argument
contains no duplicates.<p>
<UL><LI>
<tt>nub</tt> removes duplicate elements from a list. For example:
<tt><br>

<br>
&nbsp;&nbsp;nub&nbsp;[1,3,1,4,3,3]&nbsp;=&nbsp;[1,3,4]<br>

<br>

</tt><LI>
<tt>delete&nbsp;x</tt> 
removes the first occurrence of <tt>x</tt> from its list argument,
e.g.,  
<tt><br>

<br>
&nbsp;&nbsp;delete&nbsp;'a'&nbsp;"banana"&nbsp;==&nbsp;"bnana"<br>

<br>
<p>
</tt><LI>
<tt>(\\)</tt> is list
difference (non-associative).  In the result of <tt>xs&nbsp;\\&nbsp;ys</tt>,
the first occurrence of each element of <tt>ys</tt> in turn (if any)
has been removed from <tt>xs</tt>.  Thus, <tt>(xs&nbsp;++&nbsp;ys)&nbsp;\\&nbsp;xs&nbsp;==&nbsp;ys</tt>.<p>
<LI>
<tt>union</tt> is list union, e.g., 
<tt><br>

<br>
&nbsp;&nbsp;"dog"&nbsp;`union`&nbsp;"cow"&nbsp;==&nbsp;"dogcw"<br>

<br>
<p>
</tt><LI>
<tt>intersect</tt> is list intersection, e.g.,  
<tt><br>

<br>
&nbsp;&nbsp;[1,2,3,4]&nbsp;`intersect`&nbsp;[2,4,6,8]&nbsp;==&nbsp;[2,4]<br>

<br>

</tt></UL><p>
<a name="sect17.3"></a>
<h3>17.3<tt>&nbsp;&nbsp;</tt>List transformations</h3><p>
<UL><LI>
<tt>intersperse&nbsp;sep</tt> 
inserts <tt>sep</tt> between the elements of its list argument,
e.g.,  
<tt><br>

<br>
&nbsp;&nbsp;intersperse&nbsp;','&nbsp;"abcde"&nbsp;==&nbsp;"a,b,c,d,e"<br>

<br>
<p>
</tt><LI>
<tt>transpose</tt> transposes the rows and columns of its argument,
e.g., 
<tt><br>

<br>
&nbsp;&nbsp;transpose&nbsp;[[1,2,3],[4,5,6]]&nbsp;==&nbsp;[[1,4],[2,5],[3,6]]<br>

<br>
<p>
</tt><LI>
<tt>partition</tt> 
takes a predicate and a list and returns a pair of lists:
those elements of the argument list that do and do not satisfy the
predicate, respectively; i.e.,
<tt><br>

<br>
&nbsp;&nbsp;partition&nbsp;p&nbsp;xs&nbsp;==&nbsp;(filter&nbsp;p&nbsp;xs,&nbsp;filter&nbsp;(not&nbsp;.&nbsp;p)&nbsp;xs)<br>

<br>
<p>
</tt><LI>
<tt>sort
</tt>implement a stable sorting algorithm, here specified
in terms of the <tt>insertBy</tt> function, which inserts objects into a list
according to the specified ordering relation.<p>
<LI>
<tt>insert
</tt>inserts a new element into an <I>ordered</I> list (arranged in increasing order).<p>
<LI>
<tt>group</tt> splits its list argument into a list of lists of equal, adjacent
elements. For example
<tt><br>

<br>
&nbsp;&nbsp;group&nbsp;"Mississippi"&nbsp;==&nbsp;["M","i","ss","i","ss","i","pp","i"]<br>

<br>
<p>
</tt><LI>
<tt>inits</tt> returns the list of initial segments of its argument list, shortest first.
<tt><br>

<br>
&nbsp;&nbsp;inits&nbsp;"abc"&nbsp;==&nbsp;["","a","ab","abc"]<br>

<br>
<p>
</tt><LI>
<tt>tails</tt> 
returns the list of all final segments of its argument list, longest first.
<tt><br>

<br>
&nbsp;&nbsp;tails&nbsp;"abc"&nbsp;==&nbsp;["abc",&nbsp;"bc",&nbsp;"c",""]<br>
<p>
<br>

</tt><LI>
<tt>mapAccumL&nbsp;f&nbsp;s&nbsp;l</tt> 
applies <tt>f</tt> to an accumulating "state" parameter <tt>s
</tt>and to each element of <tt>l</tt> in turn.<p>
<LI>
<tt>mapAccumR
</tt>is similar to <tt>mapAccumL</tt> except that the list
is processed from right-to-left rather than left-to-right.
</UL><p>
<a name="sect17.4"></a>
<h3>17.4<tt>&nbsp;&nbsp;unfoldr</tt></h3><p>
The <tt>unfoldr</tt> function is a "dual" to <tt>foldr</tt>: while <tt>foldr</tt> reduces a list
to a summary value, <tt>unfoldr</tt> builds a list from a seed value.  For 
example:
<tt><br>

<br>
&nbsp;&nbsp;iterate&nbsp;f&nbsp;==&nbsp;unfoldr&nbsp;(\x&nbsp;-&gt;&nbsp;Just&nbsp;(x,&nbsp;f&nbsp;x))<br>

<br>

</tt>In some cases, <tt>unfoldr</tt> can undo a <tt>foldr</tt> operation:
<tt><br>

<br>
&nbsp;&nbsp;unfoldr&nbsp;f'&nbsp;(foldr&nbsp;f&nbsp;z&nbsp;xs)&nbsp;==&nbsp;xs<br>

<br>

</tt>if the following holds:
<tt><br>

<br>
&nbsp;&nbsp;f'&nbsp;(f&nbsp;x&nbsp;y)&nbsp;=&nbsp;Just&nbsp;(x,y)<br>
&nbsp;&nbsp;f'&nbsp;z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;Nothing<br>

<br>
<p>
</tt><a name="sect17.5"></a>
<h3>17.5<tt>&nbsp;&nbsp;</tt>Predicates</h3><p>
<tt>isPrefixOf</tt> and <tt>isSuffixOf</tt> check whether the first argument is a prefix (resp. suffix)
of the second argument.<p>
<a name="sect17.6"></a>
<h3>17.6<tt>&nbsp;&nbsp;</tt>The "<tt>By</tt>" operations</h3><p>
By convention, overloaded functions have a non-overloaded
counterpart whose name is suffixed with "<tt>By</tt>".  For example, the
function <tt>nub</tt> could be defined as follows:
<tt><br>

<br>
&nbsp;&nbsp;nub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(Eq&nbsp;a)&nbsp;=&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
&nbsp;&nbsp;nub&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;[]<br>
&nbsp;&nbsp;nub&nbsp;(x:xs)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;x&nbsp;:&nbsp;nub&nbsp;(filter&nbsp;(\y&nbsp;-&gt;&nbsp;not&nbsp;(x&nbsp;==&nbsp;y))&nbsp;xs)<br>

<br>

</tt>However, the equality method may not be appropriate in all situations.
The function:
<tt><br>

<br>
&nbsp;&nbsp;nubBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
&nbsp;&nbsp;nubBy&nbsp;eq&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;[]<br>
&nbsp;&nbsp;nubBy&nbsp;eq&nbsp;(x:xs)&nbsp;&nbsp;=&nbsp;&nbsp;x&nbsp;:&nbsp;nubBy&nbsp;eq&nbsp;(filter&nbsp;(\y&nbsp;-&gt;&nbsp;not&nbsp;(eq&nbsp;x&nbsp;y))&nbsp;xs)<br>

<br>

</tt>allows the programmer to supply their own equality test.
When the "<tt>By</tt>" function replaces an <tt>Eq</tt> context by a binary predicate,
the predicate is assumed to define an equivalence; when the "<tt>By</tt>"
function replaces an <tt>Ord</tt> context by a binary predicate, the
predicate is assumed to define a total ordering.<p>
The "<tt>By</tt>" variants are as follows:
<tt>nubBy</tt>, <tt>deleteBy</tt>, <tt>deleteFirstsBy</tt> (the <tt>By</tt> variant of <tt>\\</tt>),
<tt>unionBy</tt>, <tt>intersectBy</tt>, <tt>groupBy</tt>,
<tt>sortBy</tt>, <tt>insertBy</tt>, <tt>maximumBy</tt>, <tt>minimumBy</tt>.  
 
 
 
 
 
 
 
 
 
 <p>
The library does not
provide <tt>elemBy</tt>, because <tt>any&nbsp;(eq&nbsp;x)</tt> does the same job as <tt>elemBy&nbsp;eq&nbsp;x</tt> would.
A handful of overloaded functions (<tt>elemIndex</tt>, <tt>elemIndices</tt>, <tt>isPrefixOf</tt>, <tt>isSuffixOf</tt>)
were not considered important enough to have "<tt>By</tt>" variants.<p>
<a name="sect17.7"></a>
<h3>17.7<tt>&nbsp;&nbsp;</tt>The "<tt>generic</tt>" operations</h3><p>
The prefix "<tt>generic</tt>" indicates an overloaded function that is
a generalised version of a <tt>Prelude</tt> function.  For example,
<tt><br>

<br>
&nbsp;&nbsp;genericLength&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Integral&nbsp;a&nbsp;=&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;a<br>
</tt> 
<tt><br>

</tt>is a generalised version of <tt>length</tt>.<p>
The "<tt>generic</tt>" operations are as follows:
<tt>genericLength</tt>, <tt>genericTake</tt>, <tt>genericDrop</tt>,
    <tt>genericSplitAt</tt>, <tt>genericIndex</tt> (the generic version of <tt>!!</tt>), <tt>genericReplicate</tt>.<p>
<a name="sect17.8"></a>
<h3>17.8<tt>&nbsp;&nbsp;</tt>Further "<tt>zip</tt>" operations</h3><p>
The Prelude provides <tt>zip</tt>, <tt>zip3</tt>, <tt>unzip</tt>, <tt>unzip3</tt>, <tt>zipWith</tt>, and <tt>zipWith3</tt>.
The List library provides these same three operations for 4, 5, 6, and 7 arguments.<a name="List"></a><p>

<a name="sect17.9"></a>
<h3>17.9<tt>&nbsp;&nbsp;</tt>Library <tt>List</tt></h3>

<tt><br>
module&nbsp;List&nbsp;(&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;elemIndex,&nbsp;elemIndices,<br>
&nbsp;&nbsp;&nbsp;&nbsp;find,&nbsp;findIndex,&nbsp;findIndices,<br>
&nbsp;&nbsp;&nbsp;&nbsp;nub,&nbsp;nubBy,&nbsp;delete,&nbsp;deleteBy,&nbsp;(\\),&nbsp;deleteFirstsBy,<br>
&nbsp;&nbsp;&nbsp;&nbsp;union,&nbsp;unionBy,&nbsp;intersect,&nbsp;intersectBy,<br>
&nbsp;&nbsp;&nbsp;&nbsp;intersperse,&nbsp;transpose,&nbsp;partition,&nbsp;group,&nbsp;groupBy,<br>
&nbsp;&nbsp;&nbsp;&nbsp;inits,&nbsp;tails,&nbsp;isPrefixOf,&nbsp;isSuffixOf,<br>
&nbsp;&nbsp;&nbsp;&nbsp;mapAccumL,&nbsp;mapAccumR,<br>
&nbsp;&nbsp;&nbsp;&nbsp;sort,&nbsp;sortBy,&nbsp;insert,&nbsp;insertBy,&nbsp;maximumBy,&nbsp;minimumBy,<br>
&nbsp;&nbsp;&nbsp;&nbsp;genericLength,&nbsp;genericTake,&nbsp;genericDrop,<br>
&nbsp;&nbsp;&nbsp;&nbsp;genericSplitAt,&nbsp;genericIndex,&nbsp;genericReplicate,<br>
&nbsp;&nbsp;&nbsp;&nbsp;zip4,&nbsp;zip5,&nbsp;zip6,&nbsp;zip7,<br>
&nbsp;&nbsp;&nbsp;&nbsp;zipWith4,&nbsp;zipWith5,&nbsp;zipWith6,&nbsp;zipWith7,<br>
&nbsp;&nbsp;&nbsp;&nbsp;unzip4,&nbsp;unzip5,&nbsp;unzip6,&nbsp;unzip7,&nbsp;unfoldr,<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;...and&nbsp;what&nbsp;the&nbsp;Prelude&nbsp;exports<br>
&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;[]((:),&nbsp;[]),	--&nbsp;This&nbsp;is&nbsp;built-in&nbsp;syntax<br>
&nbsp;&nbsp;&nbsp;&nbsp;map,&nbsp;(++),&nbsp;concat,&nbsp;filter,<br>
&nbsp;&nbsp;&nbsp;&nbsp;head,&nbsp;last,&nbsp;tail,&nbsp;init,&nbsp;null,&nbsp;length,&nbsp;(!!),<br>
&nbsp;&nbsp;&nbsp;&nbsp;foldl,&nbsp;foldl1,&nbsp;scanl,&nbsp;scanl1,&nbsp;foldr,&nbsp;foldr1,&nbsp;scanr,&nbsp;scanr1,<br>
&nbsp;&nbsp;&nbsp;&nbsp;iterate,&nbsp;repeat,&nbsp;replicate,&nbsp;cycle,<br>
&nbsp;&nbsp;&nbsp;&nbsp;take,&nbsp;drop,&nbsp;splitAt,&nbsp;takeWhile,&nbsp;dropWhile,&nbsp;span,&nbsp;break,<br>
&nbsp;&nbsp;&nbsp;&nbsp;lines,&nbsp;words,&nbsp;unlines,&nbsp;unwords,&nbsp;reverse,&nbsp;and,&nbsp;or,<br>
&nbsp;&nbsp;&nbsp;&nbsp;any,&nbsp;all,&nbsp;elem,&nbsp;notElem,&nbsp;lookup,<br>
&nbsp;&nbsp;&nbsp;&nbsp;sum,&nbsp;product,&nbsp;maximum,&nbsp;minimum,&nbsp;concatMap,&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;zip,&nbsp;zip3,&nbsp;zipWith,&nbsp;zipWith3,&nbsp;unzip,&nbsp;unzip3<br>
&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;where<br>
<br>
import&nbsp;Maybe(&nbsp;listToMaybe&nbsp;)<br>
<br>
infix&nbsp;5&nbsp;\\<br>
<br>
elemIndex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;a&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;Maybe&nbsp;Int<br>
elemIndex&nbsp;x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;findIndex&nbsp;(x&nbsp;==)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
elemIndices&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;a&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[Int]<br>
elemIndices&nbsp;x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;findIndices&nbsp;(x&nbsp;==)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
find&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;Maybe&nbsp;a<br>
find&nbsp;p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;listToMaybe&nbsp;.&nbsp;filter&nbsp;p<br>
<br>
findIndex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;Maybe&nbsp;Int<br>
findIndex&nbsp;p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;listToMaybe&nbsp;.&nbsp;findIndices&nbsp;p<br>
<br>
findIndices&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[Int]<br>
findIndices&nbsp;p&nbsp;xs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;[&nbsp;i&nbsp;|&nbsp;(x,i)&nbsp;&lt;-&nbsp;zip&nbsp;xs&nbsp;[0..],&nbsp;p&nbsp;x&nbsp;]<br>
<br>
nub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
nub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;nubBy&nbsp;(==)<br>
<br>
nubBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
nubBy&nbsp;eq&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;[]<br>
nubBy&nbsp;eq&nbsp;(x:xs)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;x&nbsp;:&nbsp;nubBy&nbsp;eq&nbsp;(filter&nbsp;(\y&nbsp;-&gt;&nbsp;not&nbsp;(eq&nbsp;x&nbsp;y))&nbsp;xs)<br>
<br>
delete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;a&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
delete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;deleteBy&nbsp;(==)<br>
<br>
deleteBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
deleteBy&nbsp;eq&nbsp;x&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;[]<br>
deleteBy&nbsp;eq&nbsp;x&nbsp;(y:ys)&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;if&nbsp;x&nbsp;`eq`&nbsp;y&nbsp;then&nbsp;ys&nbsp;else&nbsp;y&nbsp;:&nbsp;deleteBy&nbsp;eq&nbsp;x&nbsp;ys<br>
<br>
(\\)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
(\\)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;foldl&nbsp;(flip&nbsp;delete)<br>
<br>
deleteFirstsBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
deleteFirstsBy&nbsp;eq&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;foldl&nbsp;(flip&nbsp;(deleteBy&nbsp;eq))<br>
<br>
union&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
union&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;unionBy&nbsp;(==)&nbsp;&nbsp;&nbsp;&nbsp;<br>
<br>
unionBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
unionBy&nbsp;eq&nbsp;xs&nbsp;ys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;xs&nbsp;++&nbsp;deleteFirstsBy&nbsp;eq&nbsp;(nubBy&nbsp;eq&nbsp;ys)&nbsp;xs<br>
<br>
intersect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
intersect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;intersectBy&nbsp;(==)<br>
<br>
intersectBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
intersectBy&nbsp;eq&nbsp;xs&nbsp;ys&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;[x&nbsp;|&nbsp;x&nbsp;&lt;-&nbsp;xs,&nbsp;any&nbsp;(eq&nbsp;x)&nbsp;ys]<br>
<br>
intersperse&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;a&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
intersperse&nbsp;sep&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;[]<br>
intersperse&nbsp;sep&nbsp;[x]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;[x]<br>
intersperse&nbsp;sep&nbsp;(x:xs)&nbsp;&nbsp;=&nbsp;&nbsp;x&nbsp;:&nbsp;sep&nbsp;:&nbsp;intersperse&nbsp;sep&nbsp;xs<br>
<br>
--&nbsp;transpose&nbsp;is&nbsp;lazy&nbsp;in&nbsp;both&nbsp;rows&nbsp;and&nbsp;columns,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;works&nbsp;for&nbsp;non-rectangular&nbsp;'matrices'<br>
--&nbsp;For&nbsp;example,&nbsp;transpose&nbsp;[[1,2],[3,4,5],[]]&nbsp;&nbsp;=&nbsp;&nbsp;[[1,3],[2,4],[5]]<br>
--&nbsp;Note&nbsp;that&nbsp;[h&nbsp;|&nbsp;(h:t)&nbsp;&lt;-&nbsp;xss]&nbsp;is&nbsp;not&nbsp;the&nbsp;same&nbsp;as&nbsp;(map&nbsp;head&nbsp;xss)<br>
--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;because&nbsp;the&nbsp;former&nbsp;discards&nbsp;empty&nbsp;sublists&nbsp;inside&nbsp;xss<br>
transpose&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[[a]]&nbsp;-&gt;&nbsp;[[a]]<br>
transpose&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;[]<br>
transpose&nbsp;([]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;xss)&nbsp;=&nbsp;transpose&nbsp;xss<br>
transpose&nbsp;((x:xs)&nbsp;:&nbsp;xss)&nbsp;=&nbsp;(x&nbsp;:&nbsp;[h&nbsp;|&nbsp;(h:t)&nbsp;&lt;-&nbsp;xss])&nbsp;:&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transpose&nbsp;(xs&nbsp;:&nbsp;[t&nbsp;|&nbsp;(h:t)&nbsp;&lt;-&nbsp;xss])<br>
<br>
partition&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;([a],[a])<br>
partition&nbsp;p&nbsp;xs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;(filter&nbsp;p&nbsp;xs,&nbsp;filter&nbsp;(not&nbsp;.&nbsp;p)&nbsp;xs)<br>
<br>
--&nbsp;group&nbsp;splits&nbsp;its&nbsp;list&nbsp;argument&nbsp;into&nbsp;a&nbsp;list&nbsp;of&nbsp;lists&nbsp;of&nbsp;equal,&nbsp;adjacent<br>
--&nbsp;elements.&nbsp;&nbsp;e.g.,<br>
--&nbsp;group&nbsp;"Mississippi"&nbsp;==&nbsp;["M","i","ss","i","ss","i","pp","i"]<br>
group&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[[a]]<br>
group&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;groupBy&nbsp;(==)<br>
<br>
groupBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Bool)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[[a]]<br>
groupBy&nbsp;eq&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;[]<br>
groupBy&nbsp;eq&nbsp;(x:xs)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;(x:ys)&nbsp;:&nbsp;groupBy&nbsp;eq&nbsp;zs<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;(ys,zs)&nbsp;=&nbsp;span&nbsp;(eq&nbsp;x)&nbsp;xs<br>
<br>
--&nbsp;inits&nbsp;xs&nbsp;returns&nbsp;the&nbsp;list&nbsp;of&nbsp;initial&nbsp;segments&nbsp;of&nbsp;xs,&nbsp;shortest&nbsp;first.<br>
--&nbsp;e.g.,&nbsp;inits&nbsp;"abc"&nbsp;==&nbsp;["","a","ab","abc"]<br>
inits&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[a]&nbsp;-&gt;&nbsp;[[a]]<br>
inits&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;[[]]<br>
inits&nbsp;(x:xs)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;[[]]&nbsp;++&nbsp;map&nbsp;(x:)&nbsp;(inits&nbsp;xs)<br>
<br>
--&nbsp;tails&nbsp;xs&nbsp;returns&nbsp;the&nbsp;list&nbsp;of&nbsp;all&nbsp;final&nbsp;segments&nbsp;of&nbsp;xs,&nbsp;longest&nbsp;first.<br>
--&nbsp;e.g.,&nbsp;tails&nbsp;"abc"&nbsp;==&nbsp;["abc",&nbsp;"bc",&nbsp;"c",""]<br>
tails&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[a]&nbsp;-&gt;&nbsp;[[a]]<br>
tails&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;[[]]<br>
tails&nbsp;xxs@(_:xs)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;xxs&nbsp;:&nbsp;tails&nbsp;xs<br>
<br>
isPrefixOf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;Bool<br>
isPrefixOf&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;True<br>
isPrefixOf&nbsp;_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;False<br>
isPrefixOf&nbsp;(x:xs)&nbsp;(y:ys)&nbsp;=&nbsp;&nbsp;x&nbsp;==&nbsp;y&nbsp;&amp;&amp;&nbsp;isPrefixOf&nbsp;xs&nbsp;ys<br>
<br>
isSuffixOf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;Eq&nbsp;a&nbsp;=&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;Bool<br>
isSuffixOf&nbsp;x&nbsp;y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;reverse&nbsp;x&nbsp;`isPrefixOf`&nbsp;reverse&nbsp;y<br>
<br>
mapAccumL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;b&nbsp;-&gt;&nbsp;(a,&nbsp;c))&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;(a,&nbsp;[c])<br>
mapAccumL&nbsp;f&nbsp;s&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;(s,&nbsp;[])<br>
mapAccumL&nbsp;f&nbsp;s&nbsp;(x:xs)&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;(s'',y:ys)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;(s',&nbsp;y&nbsp;)&nbsp;=&nbsp;f&nbsp;s&nbsp;x<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(s'',ys)&nbsp;=&nbsp;mapAccumL&nbsp;f&nbsp;s'&nbsp;xs<br>
<br>
mapAccumR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;b&nbsp;-&gt;&nbsp;(a,&nbsp;c))&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;(a,&nbsp;[c])<br>
mapAccumR&nbsp;f&nbsp;s&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;(s,&nbsp;[])<br>
mapAccumR&nbsp;f&nbsp;s&nbsp;(x:xs)&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;(s'',&nbsp;y:ys)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;(s'',y&nbsp;)&nbsp;=&nbsp;f&nbsp;s'&nbsp;x<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(s',&nbsp;ys)&nbsp;=&nbsp;mapAccumR&nbsp;f&nbsp;s&nbsp;xs<br>
<br>
unfoldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(b&nbsp;-&gt;&nbsp;Maybe&nbsp;(a,b))&nbsp;-&gt;&nbsp;b&nbsp;-&gt;&nbsp;[a]<br>
unfoldr&nbsp;f&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;case&nbsp;f&nbsp;b&nbsp;of<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Nothing&nbsp;&nbsp;&nbsp;&nbsp;-&gt;&nbsp;[]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Just&nbsp;(a,b)&nbsp;-&gt;&nbsp;a&nbsp;:&nbsp;unfoldr&nbsp;f&nbsp;b<br>
<br>
sort&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(Ord&nbsp;a)&nbsp;=&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
sort&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;sortBy&nbsp;compare<br>
<br>
sortBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Ordering)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
sortBy&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;foldr&nbsp;(insertBy&nbsp;cmp)&nbsp;[]<br>
<br>
insert&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(Ord&nbsp;a)&nbsp;=&gt;&nbsp;a&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
insert&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;insertBy&nbsp;compare<br>
<br>
insertBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Ordering)&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;[a]<br>
insertBy&nbsp;cmp&nbsp;x&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;[x]<br>
insertBy&nbsp;cmp&nbsp;x&nbsp;ys@(y:ys')<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;case&nbsp;cmp&nbsp;x&nbsp;y&nbsp;of<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GT&nbsp;-&gt;&nbsp;y&nbsp;:&nbsp;insertBy&nbsp;cmp&nbsp;x&nbsp;ys'<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_&nbsp;&nbsp;-&gt;&nbsp;x&nbsp;:&nbsp;ys<br>
<br>
maximumBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Ordering)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;a<br>
maximumBy&nbsp;cmp&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;error&nbsp;"List.maximumBy:&nbsp;empty&nbsp;list"<br>
maximumBy&nbsp;cmp&nbsp;xs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;foldl1&nbsp;max&nbsp;xs<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max&nbsp;x&nbsp;y&nbsp;=&nbsp;case&nbsp;cmp&nbsp;x&nbsp;y&nbsp;of<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GT&nbsp;-&gt;&nbsp;x<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_&nbsp;&nbsp;-&gt;&nbsp;y<br>
<br>
minimumBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;Ordering)&nbsp;-&gt;&nbsp;[a]&nbsp;-&gt;&nbsp;a<br>
minimumBy&nbsp;cmp&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;error&nbsp;"List.minimumBy:&nbsp;empty&nbsp;list"<br>
minimumBy&nbsp;cmp&nbsp;xs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;foldl1&nbsp;min&nbsp;xs<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min&nbsp;x&nbsp;y&nbsp;=&nbsp;case&nbsp;cmp&nbsp;x&nbsp;y&nbsp;of<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GT&nbsp;-&gt;&nbsp;y<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_&nbsp;&nbsp;-&gt;&nbsp;x<br>
<br>
genericLength&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(Integral&nbsp;a)&nbsp;=&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;a<br>
genericLength&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;0<br>
genericLength&nbsp;(x:xs)&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;1&nbsp;+&nbsp;genericLength&nbsp;xs<br>
<br>
genericTake&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(Integral&nbsp;a)&nbsp;=&gt;&nbsp;a&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;[b]<br>
genericTake&nbsp;n&nbsp;_&nbsp;|&nbsp;n&nbsp;&lt;=&nbsp;0&nbsp;=&nbsp;[]<br>
genericTake&nbsp;_&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;[]<br>
genericTake&nbsp;n&nbsp;(x:xs)&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;x&nbsp;:&nbsp;genericTake&nbsp;(n-1)&nbsp;xs<br>
<br>
genericDrop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(Integral&nbsp;a)&nbsp;=&gt;&nbsp;a&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;[b]<br>
genericDrop&nbsp;n&nbsp;xs&nbsp;|&nbsp;n&nbsp;&lt;=&nbsp;0&nbsp;=&nbsp;xs<br>
genericDrop&nbsp;_&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;[]<br>
genericDrop&nbsp;n&nbsp;(_:xs)&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;genericDrop&nbsp;(n-1)&nbsp;xs<br>
<br>
genericSplitAt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(Integral&nbsp;a)&nbsp;=&gt;&nbsp;a&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;([b],[b])<br>
genericSplitAt&nbsp;n&nbsp;xs&nbsp;|&nbsp;n&nbsp;&lt;=&nbsp;0&nbsp;=&nbsp;&nbsp;([],xs)<br>
genericSplitAt&nbsp;_&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;([],[])<br>
genericSplitAt&nbsp;n&nbsp;(x:xs)&nbsp;=&nbsp;&nbsp;(x:xs',xs'')&nbsp;where<br>
&nbsp;&nbsp;&nbsp;&nbsp;(xs',xs'')&nbsp;=&nbsp;genericSplitAt&nbsp;(n-1)&nbsp;xs<br>
<br>
genericIndex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(Integral&nbsp;a)&nbsp;=&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;a&nbsp;-&gt;&nbsp;b<br>
genericIndex&nbsp;(x:_)&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;x<br>
genericIndex&nbsp;(_:xs)&nbsp;n&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;n&nbsp;&gt;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;genericIndex&nbsp;xs&nbsp;(n-1)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;otherwise&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;error&nbsp;"List.genericIndex:&nbsp;negative&nbsp;argument"<br>
genericIndex&nbsp;_&nbsp;_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;error&nbsp;"List.genericIndex:&nbsp;index&nbsp;too&nbsp;large"<br>
<br>
genericReplicate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(Integral&nbsp;a)&nbsp;=&gt;&nbsp;a&nbsp;-&gt;&nbsp;b&nbsp;-&gt;&nbsp;[b]<br>
genericReplicate&nbsp;n&nbsp;x&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;genericTake&nbsp;n&nbsp;(repeat&nbsp;x)<br>
&nbsp;<br>
zip4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[a]&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;[c]&nbsp;-&gt;&nbsp;[d]&nbsp;-&gt;&nbsp;[(a,b,c,d)]<br>
zip4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;zipWith4&nbsp;(,,,)<br>
<br>
zip5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[a]&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;[c]&nbsp;-&gt;&nbsp;[d]&nbsp;-&gt;&nbsp;[e]&nbsp;-&gt;&nbsp;[(a,b,c,d,e)]<br>
zip5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;zipWith5&nbsp;(,,,,)<br>
<br>
zip6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[a]&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;[c]&nbsp;-&gt;&nbsp;[d]&nbsp;-&gt;&nbsp;[e]&nbsp;-&gt;&nbsp;[f]&nbsp;-&gt;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[(a,b,c,d,e,f)]<br>
zip6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;zipWith6&nbsp;(,,,,,)<br>
<br>
zip7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[a]&nbsp;-&gt;&nbsp;[b]&nbsp;-&gt;&nbsp;[c]&nbsp;-&gt;&nbsp;[d]&nbsp;-&gt;&nbsp;[e]&nbsp;-&gt;&nbsp;[f]&nbsp;-&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[g]&nbsp;-&gt;&nbsp;[(a,b,c,d,e,f,g)]<br>
zip7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;zipWith7&nbsp;(,,,,,,)<br>
<br>
zipWith4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a-&gt;b-&gt;c-&gt;d-&gt;e)&nbsp;-&gt;&nbsp;[a]-&gt;[b]-&gt;[c]-&gt;[d]-&gt;[e]<br>
zipWith4&nbsp;z&nbsp;(a:as)&nbsp;(b:bs)&nbsp;(c:cs)&nbsp;(d:ds)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;z&nbsp;a&nbsp;b&nbsp;c&nbsp;d&nbsp;:&nbsp;zipWith4&nbsp;z&nbsp;as&nbsp;bs&nbsp;cs&nbsp;ds<br>
zipWith4&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;[]<br>
<br>
zipWith5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a-&gt;b-&gt;c-&gt;d-&gt;e-&gt;f)&nbsp;-&gt;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[a]-&gt;[b]-&gt;[c]-&gt;[d]-&gt;[e]-&gt;[f]<br>
zipWith5&nbsp;z&nbsp;(a:as)&nbsp;(b:bs)&nbsp;(c:cs)&nbsp;(d:ds)&nbsp;(e:es)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;z&nbsp;a&nbsp;b&nbsp;c&nbsp;d&nbsp;e&nbsp;:&nbsp;zipWith5&nbsp;z&nbsp;as&nbsp;bs&nbsp;cs&nbsp;ds&nbsp;es<br>
zipWith5&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;[]<br>
<br>
zipWith6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a-&gt;b-&gt;c-&gt;d-&gt;e-&gt;f-&gt;g)&nbsp;-&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[a]-&gt;[b]-&gt;[c]-&gt;[d]-&gt;[e]-&gt;[f]-&gt;[g]<br>
zipWith6&nbsp;z&nbsp;(a:as)&nbsp;(b:bs)&nbsp;(c:cs)&nbsp;(d:ds)&nbsp;(e:es)&nbsp;(f:fs)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;z&nbsp;a&nbsp;b&nbsp;c&nbsp;d&nbsp;e&nbsp;f&nbsp;:&nbsp;zipWith6&nbsp;z&nbsp;as&nbsp;bs&nbsp;cs&nbsp;ds&nbsp;es&nbsp;fs<br>
zipWith6&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;&nbsp;=&nbsp;&nbsp;[]<br>
<br>
zipWith7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;(a-&gt;b-&gt;c-&gt;d-&gt;e-&gt;f-&gt;g-&gt;h)&nbsp;-&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[a]-&gt;[b]-&gt;[c]-&gt;[d]-&gt;[e]-&gt;[f]-&gt;[g]-&gt;[h]<br>
zipWith7&nbsp;z&nbsp;(a:as)&nbsp;(b:bs)&nbsp;(c:cs)&nbsp;(d:ds)&nbsp;(e:es)&nbsp;(f:fs)&nbsp;(g:gs)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;z&nbsp;a&nbsp;b&nbsp;c&nbsp;d&nbsp;e&nbsp;f&nbsp;g&nbsp;:&nbsp;zipWith7&nbsp;z&nbsp;as&nbsp;bs&nbsp;cs&nbsp;ds&nbsp;es&nbsp;fs&nbsp;gs<br>
zipWith7&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;=&nbsp;[]<br>
<br>
unzip4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[(a,b,c,d)]&nbsp;-&gt;&nbsp;([a],[b],[c],[d])<br>
unzip4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;foldr&nbsp;(\(a,b,c,d)&nbsp;~(as,bs,cs,ds)&nbsp;-&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(a:as,b:bs,c:cs,d:ds))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;([],[],[],[])<br>
<br>
unzip5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[(a,b,c,d,e)]&nbsp;-&gt;&nbsp;([a],[b],[c],[d],[e])<br>
unzip5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;foldr&nbsp;(\(a,b,c,d,e)&nbsp;~(as,bs,cs,ds,es)&nbsp;-&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(a:as,b:bs,c:cs,d:ds,e:es))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;([],[],[],[],[])<br>
<br>
unzip6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[(a,b,c,d,e,f)]&nbsp;-&gt;&nbsp;([a],[b],[c],[d],[e],[f])<br>
unzip6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;foldr&nbsp;(\(a,b,c,d,e,f)&nbsp;~(as,bs,cs,ds,es,fs)&nbsp;-&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(a:as,b:bs,c:cs,d:ds,e:es,f:fs))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;([],[],[],[],[],[])<br>
<br>
unzip7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::&nbsp;[(a,b,c,d,e,f,g)]&nbsp;-&gt;&nbsp;([a],[b],[c],[d],[e],[f],[g])<br>
unzip7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;foldr&nbsp;(\(a,b,c,d,e,f,g)&nbsp;~(as,bs,cs,ds,es,fs,gs)&nbsp;-&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(a:as,b:bs,c:cs,d:ds,e:es,f:fs,g:gs))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;([],[],[],[],[],[],[])<br>
<p>
<hr><i>The Haskell 98 Report</i><br><a href="index.html">top</a> | <a href="array.html">back</a> | <a href="maybe.html">next</a> | <a href="index98.html">contents</a> | <a href="prelude-index.html">function index</a> <br><font size=2>December 2002</font>
</tt>