This file is indexed.

/usr/share/doc/libghc-lens-doc/html/src/Data-List-Split-Lens.html is in libghc-lens-doc 4.1.2.1-3.

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
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
<title>src/Data/List/Split/Lens.hs</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a><span class='hs-comment'>{-# LANGUAGE Rank2Types #-}</span>
<a name="line-2"></a><span class='hs-comment'>----------------------------------------------------------------------------</span>
<a name="line-3"></a><span class='hs-comment'>-- |</span>
<a name="line-4"></a><span class='hs-comment'>-- Module      :  Data.List.Split.Lens</span>
<a name="line-5"></a><span class='hs-comment'>-- Copyright   :  (C) 2012-2014 Edward Kmett, Alexander Altman</span>
<a name="line-6"></a><span class='hs-comment'>-- License     :  BSD-style (see the file LICENSE)</span>
<a name="line-7"></a><span class='hs-comment'>-- Maintainer  :  Edward Kmett &lt;ekmett@gmail.com&gt;</span>
<a name="line-8"></a><span class='hs-comment'>-- Stability   :  provisional</span>
<a name="line-9"></a><span class='hs-comment'>-- Portability :  Rank2Types</span>
<a name="line-10"></a><span class='hs-comment'>--</span>
<a name="line-11"></a><span class='hs-comment'>-- Lenses for working with Data.List.Split</span>
<a name="line-12"></a><span class='hs-comment'>--</span>
<a name="line-13"></a><span class='hs-comment'>----------------------------------------------------------------------------</span>
<a name="line-14"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>List</span><span class='hs-varop'>.</span><span class='hs-conid'>Split</span><span class='hs-varop'>.</span><span class='hs-conid'>Lens</span>
<a name="line-15"></a>  <span class='hs-layout'>(</span>
<a name="line-16"></a>  <span class='hs-comment'>-- * Splitting Folds</span>
<a name="line-17"></a>    <span class='hs-varid'>splitting</span>
<a name="line-18"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>splittingOn</span>
<a name="line-19"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>splittingOneOf</span>
<a name="line-20"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>splittingWhen</span>
<a name="line-21"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>endingBy</span>
<a name="line-22"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>endingByOneOf</span>
<a name="line-23"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>wordingBy</span>
<a name="line-24"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>liningBy</span>
<a name="line-25"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>chunking</span>
<a name="line-26"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>splittingPlaces</span>
<a name="line-27"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>splittingPlacesBlanks</span>
<a name="line-28"></a>  <span class='hs-comment'>-- * Lenses for 'Splitter' Internals</span>
<a name="line-29"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>delimiters</span>
<a name="line-30"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>delimiting</span>
<a name="line-31"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>condensing</span>
<a name="line-32"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>keepInitialBlanks</span>
<a name="line-33"></a>  <span class='hs-layout'>,</span> <span class='hs-varid'>keepFinalBlanks</span>
<a name="line-34"></a>  <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
<a name="line-35"></a>
<a name="line-36"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Lens</span>
<a name="line-37"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Monoid</span>
<a name="line-38"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>List</span><span class='hs-varop'>.</span><span class='hs-conid'>Split</span>
<a name="line-39"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>List</span><span class='hs-varop'>.</span><span class='hs-conid'>Split</span><span class='hs-varop'>.</span><span class='hs-conid'>Internals</span>
<a name="line-40"></a>
<a name="line-41"></a><span class='hs-comment'>-- $setup</span>
<a name="line-42"></a><span class='hs-comment'>-- &gt;&gt;&gt; :set -XNoOverloadedStrings</span>
<a name="line-43"></a><span class='hs-comment'>-- &gt;&gt;&gt; import Control.Lens</span>
<a name="line-44"></a><span class='hs-comment'>-- &gt;&gt;&gt; import Numeric.Lens (hex)</span>
<a name="line-45"></a><span class='hs-comment'>-- &gt;&gt;&gt; import Data.Char (chr)</span>
<a name="line-46"></a>
<a name="line-47"></a><a name="splitting"></a><span class='hs-comment'>-- | Obtain a 'Fold' by splitting another 'Fold', 'Lens', 'Getter' or 'Traversal' according to the given splitting strategy.</span>
<a name="line-48"></a><span class='hs-comment'>--</span>
<a name="line-49"></a><span class='hs-comment'>-- @</span>
<a name="line-50"></a><span class='hs-comment'>-- 'splitting' :: 'Splitter' a -&gt; 'Fold' s a -&gt; 'Fold' s [a]</span>
<a name="line-51"></a><span class='hs-comment'>-- @</span>
<a name="line-52"></a><span class='hs-definition'>splitting</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Splitter</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Getting</span> <span class='hs-layout'>(</span><span class='hs-conid'>Endo</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Fold</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span>
<a name="line-53"></a><span class='hs-definition'>splitting</span> <span class='hs-varid'>s</span> <span class='hs-varid'>l</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>coerce</span> <span class='hs-varop'>.</span> <span class='hs-varid'>traverse</span> <span class='hs-varid'>f</span> <span class='hs-varop'>.</span> <span class='hs-varid'>split</span> <span class='hs-varid'>s</span> <span class='hs-varop'>.</span> <span class='hs-varid'>toListOf</span> <span class='hs-varid'>l</span>
<a name="line-54"></a><span class='hs-comment'>{-# INLINE splitting #-}</span>
<a name="line-55"></a>
<a name="line-56"></a><a name="splittingOn"></a><span class='hs-comment'>-- | Obtain a 'Fold' by splitting another 'Fold', 'Lens', 'Getter' or 'Traversal' on the given delimiter.</span>
<a name="line-57"></a><span class='hs-comment'>--</span>
<a name="line-58"></a><span class='hs-comment'>-- Equivalent to @'splitting' '.' 'dropDelims' '.' 'onSublist'@.</span>
<a name="line-59"></a><span class='hs-comment'>--</span>
<a name="line-60"></a><span class='hs-comment'>-- @</span>
<a name="line-61"></a><span class='hs-comment'>-- 'splittingOn' :: 'Eq' a =&gt; [a] -&gt; 'Fold' s a -&gt; 'Fold' s [a]</span>
<a name="line-62"></a><span class='hs-comment'>-- @</span>
<a name="line-63"></a><span class='hs-definition'>splittingOn</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Eq</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Getting</span> <span class='hs-layout'>(</span><span class='hs-conid'>Endo</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Fold</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span>
<a name="line-64"></a><span class='hs-definition'>splittingOn</span> <span class='hs-varid'>s</span> <span class='hs-varid'>l</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>coerce</span> <span class='hs-varop'>.</span> <span class='hs-varid'>traverse</span> <span class='hs-varid'>f</span> <span class='hs-varop'>.</span> <span class='hs-varid'>splitOn</span> <span class='hs-varid'>s</span> <span class='hs-varop'>.</span> <span class='hs-varid'>toListOf</span> <span class='hs-varid'>l</span>
<a name="line-65"></a><span class='hs-comment'>{-# INLINE splittingOn #-}</span>
<a name="line-66"></a>
<a name="line-67"></a><a name="splittingOneOf"></a><span class='hs-comment'>-- | Obtain a 'Fold' by splitting another 'Fold', 'Lens', 'Getter' or 'Traversal' on any of the given elements.</span>
<a name="line-68"></a><span class='hs-comment'>--</span>
<a name="line-69"></a><span class='hs-comment'>-- Equivalent to @'splitting' '.' 'dropDelims' '.' 'oneOf'@.</span>
<a name="line-70"></a><span class='hs-comment'>--</span>
<a name="line-71"></a><span class='hs-comment'>-- @</span>
<a name="line-72"></a><span class='hs-comment'>-- 'splittingOn' :: 'Eq' a =&gt; [a] -&gt; 'Fold' s a -&gt; 'Fold' s [a]</span>
<a name="line-73"></a><span class='hs-comment'>-- @</span>
<a name="line-74"></a><span class='hs-definition'>splittingOneOf</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Eq</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Getting</span> <span class='hs-layout'>(</span><span class='hs-conid'>Endo</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Fold</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span>
<a name="line-75"></a><span class='hs-definition'>splittingOneOf</span> <span class='hs-varid'>s</span> <span class='hs-varid'>l</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>coerce</span> <span class='hs-varop'>.</span> <span class='hs-varid'>traverse</span> <span class='hs-varid'>f</span> <span class='hs-varop'>.</span> <span class='hs-varid'>splitOneOf</span> <span class='hs-varid'>s</span> <span class='hs-varop'>.</span> <span class='hs-varid'>toListOf</span> <span class='hs-varid'>l</span>
<a name="line-76"></a><span class='hs-comment'>{-# INLINE splittingOneOf #-}</span>
<a name="line-77"></a>
<a name="line-78"></a><a name="splittingWhen"></a><span class='hs-comment'>-- | Obtain a 'Fold' by splitting another 'Fold', 'Lens', 'Getter' or 'Traversal' on elements satisfying the given predicate.</span>
<a name="line-79"></a><span class='hs-comment'>--</span>
<a name="line-80"></a><span class='hs-comment'>-- Equivalent to @'splitting' '.' 'dropDelims' '.' 'whenElt'@.</span>
<a name="line-81"></a><span class='hs-comment'>--</span>
<a name="line-82"></a><span class='hs-comment'>-- @</span>
<a name="line-83"></a><span class='hs-comment'>-- 'splittingWhen' :: (a -&gt; 'Bool') -&gt; 'Fold' s a -&gt; 'Fold' s [a]</span>
<a name="line-84"></a><span class='hs-comment'>-- @</span>
<a name="line-85"></a><span class='hs-definition'>splittingWhen</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Getting</span> <span class='hs-layout'>(</span><span class='hs-conid'>Endo</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Fold</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span>
<a name="line-86"></a><span class='hs-definition'>splittingWhen</span> <span class='hs-varid'>s</span> <span class='hs-varid'>l</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>coerce</span> <span class='hs-varop'>.</span> <span class='hs-varid'>traverse</span> <span class='hs-varid'>f</span> <span class='hs-varop'>.</span> <span class='hs-varid'>splitWhen</span> <span class='hs-varid'>s</span> <span class='hs-varop'>.</span> <span class='hs-varid'>toListOf</span> <span class='hs-varid'>l</span>
<a name="line-87"></a><span class='hs-comment'>{-# INLINE splittingWhen #-}</span>
<a name="line-88"></a>
<a name="line-89"></a><a name="endingBy"></a><span class='hs-comment'>-- | Obtain a 'Fold' by splitting another 'Fold', 'Lens', 'Getter' or 'Traversal' into chunks terminated by the given delimiter.</span>
<a name="line-90"></a><span class='hs-comment'>--</span>
<a name="line-91"></a><span class='hs-comment'>-- Equivalent to @'splitting' '.' 'dropDelims' '.' 'onSublist'@.</span>
<a name="line-92"></a><span class='hs-comment'>--</span>
<a name="line-93"></a><span class='hs-comment'>-- @</span>
<a name="line-94"></a><span class='hs-comment'>-- 'endingBy' :: 'Eq' a =&gt; [a] -&gt; 'Fold' s a -&gt; 'Fold' s [a]</span>
<a name="line-95"></a><span class='hs-comment'>-- @</span>
<a name="line-96"></a><span class='hs-definition'>endingBy</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Eq</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Getting</span> <span class='hs-layout'>(</span><span class='hs-conid'>Endo</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Fold</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span>
<a name="line-97"></a><span class='hs-definition'>endingBy</span> <span class='hs-varid'>s</span> <span class='hs-varid'>l</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>coerce</span> <span class='hs-varop'>.</span> <span class='hs-varid'>traverse</span> <span class='hs-varid'>f</span> <span class='hs-varop'>.</span> <span class='hs-varid'>endBy</span> <span class='hs-varid'>s</span> <span class='hs-varop'>.</span> <span class='hs-varid'>toListOf</span> <span class='hs-varid'>l</span>
<a name="line-98"></a><span class='hs-comment'>{-# INLINE endingBy #-}</span>
<a name="line-99"></a>
<a name="line-100"></a><a name="endingByOneOf"></a><span class='hs-comment'>-- | Obtain a 'Fold' by splitting another 'Fold', 'Lens', 'Getter' or 'Traversal' into chunks terminated by any of the given elements.</span>
<a name="line-101"></a><span class='hs-comment'>--</span>
<a name="line-102"></a><span class='hs-comment'>-- Equivalent to @'splitting' '.' 'dropFinalBlank' '.' 'dropDelims' '.' 'oneOf'@.</span>
<a name="line-103"></a><span class='hs-comment'>--</span>
<a name="line-104"></a><span class='hs-comment'>-- @</span>
<a name="line-105"></a><span class='hs-comment'>-- 'endingByOneOf' :: 'Eq' a =&gt; [a] -&gt; 'Fold' s a -&gt; 'Fold' s [a]</span>
<a name="line-106"></a><span class='hs-comment'>-- @</span>
<a name="line-107"></a><span class='hs-definition'>endingByOneOf</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Eq</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Getting</span> <span class='hs-layout'>(</span><span class='hs-conid'>Endo</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Fold</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span>
<a name="line-108"></a><span class='hs-definition'>endingByOneOf</span> <span class='hs-varid'>s</span> <span class='hs-varid'>l</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>coerce</span> <span class='hs-varop'>.</span> <span class='hs-varid'>traverse</span> <span class='hs-varid'>f</span> <span class='hs-varop'>.</span> <span class='hs-varid'>endByOneOf</span> <span class='hs-varid'>s</span> <span class='hs-varop'>.</span> <span class='hs-varid'>toListOf</span> <span class='hs-varid'>l</span>
<a name="line-109"></a><span class='hs-comment'>{-# INLINE endingByOneOf #-}</span>
<a name="line-110"></a>
<a name="line-111"></a><a name="wordingBy"></a><span class='hs-comment'>-- | Obtain a 'Fold' by splitting another 'Fold', 'Lens', 'Getter' or 'Traversal' into "words", with word boundaries indicated by the given predicate.</span>
<a name="line-112"></a><span class='hs-comment'>--</span>
<a name="line-113"></a><span class='hs-comment'>-- Equivalent to @'splitting' '.' 'dropBlanks' '.' 'dropDelims' '.' 'whenElt'@.</span>
<a name="line-114"></a><span class='hs-comment'>--</span>
<a name="line-115"></a><span class='hs-comment'>-- @</span>
<a name="line-116"></a><span class='hs-comment'>-- 'wordingBy' :: (a -&gt; 'Bool') -&gt; 'Fold' s a -&gt; 'Fold' s [a]</span>
<a name="line-117"></a><span class='hs-comment'>-- @</span>
<a name="line-118"></a><span class='hs-definition'>wordingBy</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Getting</span> <span class='hs-layout'>(</span><span class='hs-conid'>Endo</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Fold</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span>
<a name="line-119"></a><span class='hs-definition'>wordingBy</span> <span class='hs-varid'>s</span> <span class='hs-varid'>l</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>coerce</span> <span class='hs-varop'>.</span> <span class='hs-varid'>traverse</span> <span class='hs-varid'>f</span> <span class='hs-varop'>.</span> <span class='hs-varid'>wordsBy</span> <span class='hs-varid'>s</span> <span class='hs-varop'>.</span> <span class='hs-varid'>toListOf</span> <span class='hs-varid'>l</span>
<a name="line-120"></a><span class='hs-comment'>{-# INLINE wordingBy #-}</span>
<a name="line-121"></a>
<a name="line-122"></a><a name="liningBy"></a><span class='hs-comment'>-- | Obtain a 'Fold' by splitting another 'Fold', 'Lens', 'Getter' or 'Traversal' into "lines", with line boundaries indicated by the given predicate.</span>
<a name="line-123"></a><span class='hs-comment'>--</span>
<a name="line-124"></a><span class='hs-comment'>-- Equivalent to @'splitting' '.' 'dropFinalBlank' '.' 'dropDelims' '.' 'whenElt'@.</span>
<a name="line-125"></a><span class='hs-comment'>--</span>
<a name="line-126"></a><span class='hs-comment'>-- @</span>
<a name="line-127"></a><span class='hs-comment'>-- 'liningBy' :: (a -&gt; 'Bool') -&gt; 'Fold' s a -&gt; 'Fold' s [a]</span>
<a name="line-128"></a><span class='hs-comment'>-- @</span>
<a name="line-129"></a><span class='hs-definition'>liningBy</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Getting</span> <span class='hs-layout'>(</span><span class='hs-conid'>Endo</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Fold</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span>
<a name="line-130"></a><span class='hs-definition'>liningBy</span> <span class='hs-varid'>s</span> <span class='hs-varid'>l</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>coerce</span> <span class='hs-varop'>.</span> <span class='hs-varid'>traverse</span> <span class='hs-varid'>f</span> <span class='hs-varop'>.</span> <span class='hs-varid'>linesBy</span> <span class='hs-varid'>s</span> <span class='hs-varop'>.</span> <span class='hs-varid'>toListOf</span> <span class='hs-varid'>l</span>
<a name="line-131"></a><span class='hs-comment'>{-# INLINE liningBy #-}</span>
<a name="line-132"></a>
<a name="line-133"></a><a name="chunking"></a><span class='hs-comment'>-- | Obtain a 'Fold' by splitting another 'Fold', 'Lens', 'Getter' or 'Traversal' into length-@n@ pieces.</span>
<a name="line-134"></a><span class='hs-comment'>--</span>
<a name="line-135"></a><span class='hs-comment'>-- &gt;&gt;&gt; "48656c6c6f20776f726c64"^..chunking 2 folded.hex.to chr</span>
<a name="line-136"></a><span class='hs-comment'>-- "Hello world"</span>
<a name="line-137"></a><span class='hs-comment'>--</span>
<a name="line-138"></a><span class='hs-comment'>-- @</span>
<a name="line-139"></a><span class='hs-comment'>-- 'chunking' :: 'Int' -&gt; 'Fold' s a -&gt; 'Fold' s [a]</span>
<a name="line-140"></a><span class='hs-comment'>-- @</span>
<a name="line-141"></a><span class='hs-definition'>chunking</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span> <span class='hs-comment'>-- ^ @n@</span>
<a name="line-142"></a>            <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Getting</span> <span class='hs-layout'>(</span><span class='hs-conid'>Endo</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Fold</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span>
<a name="line-143"></a><span class='hs-definition'>chunking</span> <span class='hs-varid'>s</span> <span class='hs-varid'>l</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>coerce</span> <span class='hs-varop'>.</span> <span class='hs-varid'>traverse</span> <span class='hs-varid'>f</span> <span class='hs-varop'>.</span> <span class='hs-varid'>chunksOf</span> <span class='hs-varid'>s</span> <span class='hs-varop'>.</span> <span class='hs-varid'>toListOf</span> <span class='hs-varid'>l</span>
<a name="line-144"></a><span class='hs-comment'>{-# INLINE chunking #-}</span>
<a name="line-145"></a>
<a name="line-146"></a><a name="splittingPlaces"></a><span class='hs-comment'>-- | Obtain a 'Fold' by splitting another 'Fold', 'Lens', 'Getter' or 'Traversal' into chunks of the given lengths, .</span>
<a name="line-147"></a><span class='hs-comment'>--</span>
<a name="line-148"></a><span class='hs-comment'>-- @</span>
<a name="line-149"></a><span class='hs-comment'>-- 'splittingPlaces' :: 'Integral' n =&gt; [n] -&gt; 'Fold' s a -&gt; 'Fold' s [a]</span>
<a name="line-150"></a><span class='hs-comment'>-- @</span>
<a name="line-151"></a><span class='hs-definition'>splittingPlaces</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Integral</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>n</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Getting</span> <span class='hs-layout'>(</span><span class='hs-conid'>Endo</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Fold</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span>
<a name="line-152"></a><span class='hs-definition'>splittingPlaces</span> <span class='hs-varid'>s</span> <span class='hs-varid'>l</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>coerce</span> <span class='hs-varop'>.</span> <span class='hs-varid'>traverse</span> <span class='hs-varid'>f</span> <span class='hs-varop'>.</span> <span class='hs-varid'>splitPlaces</span> <span class='hs-varid'>s</span> <span class='hs-varop'>.</span> <span class='hs-varid'>toListOf</span> <span class='hs-varid'>l</span>
<a name="line-153"></a><span class='hs-comment'>{-# INLINE splittingPlaces #-}</span>
<a name="line-154"></a>
<a name="line-155"></a><a name="splittingPlacesBlanks"></a><span class='hs-comment'>-- | Obtain a 'Fold' by splitting another 'Fold', 'Lens', 'Getter' or 'Traversal' into chunks of the given lengths.  Unlike 'splittingPlaces', the output 'Fold' will always be the same length as the first input argument.</span>
<a name="line-156"></a><span class='hs-comment'>--</span>
<a name="line-157"></a><span class='hs-comment'>-- @</span>
<a name="line-158"></a><span class='hs-comment'>-- 'splittingPlacesBlanks' :: 'Integral' n =&gt; [n] -&gt; 'Fold' s a -&gt; 'Fold' s [a]</span>
<a name="line-159"></a><span class='hs-comment'>-- @</span>
<a name="line-160"></a><span class='hs-definition'>splittingPlacesBlanks</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Integral</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>=&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>n</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Getting</span> <span class='hs-layout'>(</span><span class='hs-conid'>Endo</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Fold</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span>
<a name="line-161"></a><span class='hs-definition'>splittingPlacesBlanks</span> <span class='hs-varid'>s</span> <span class='hs-varid'>l</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>coerce</span> <span class='hs-varop'>.</span> <span class='hs-varid'>traverse</span> <span class='hs-varid'>f</span> <span class='hs-varop'>.</span> <span class='hs-varid'>splitPlacesBlanks</span> <span class='hs-varid'>s</span> <span class='hs-varop'>.</span> <span class='hs-varid'>toListOf</span> <span class='hs-varid'>l</span>
<a name="line-162"></a><span class='hs-comment'>{-# INLINE splittingPlacesBlanks #-}</span>
<a name="line-163"></a>
<a name="line-164"></a><a name="delimiters"></a><span class='hs-comment'>-- | Modify or retrieve the list of delimiters for a 'Splitter'.</span>
<a name="line-165"></a><span class='hs-definition'>delimiters</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens</span> <span class='hs-layout'>(</span><span class='hs-conid'>Splitter</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>Splitter</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span><span class='hs-keyglyph'>]</span>
<a name="line-166"></a><span class='hs-definition'>delimiters</span> <span class='hs-varid'>f</span> <span class='hs-varid'>s</span><span class='hs-keyglyph'>@</span><span class='hs-conid'>Splitter</span> <span class='hs-layout'>{</span> <span class='hs-varid'>delimiter</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Delimiter</span> <span class='hs-varid'>ds</span> <span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>f</span> <span class='hs-varid'>ds</span> <span class='hs-varop'>&lt;&amp;&gt;</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>ds'</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>s</span> <span class='hs-layout'>{</span> <span class='hs-varid'>delimiter</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Delimiter</span> <span class='hs-varid'>ds'</span> <span class='hs-layout'>}</span>
<a name="line-167"></a><span class='hs-comment'>{-# INLINE delimiters #-}</span>
<a name="line-168"></a>
<a name="line-169"></a><a name="delimiting"></a><span class='hs-comment'>-- | Modify or retrieve the policy for what a 'Splitter' to do with delimiters.</span>
<a name="line-170"></a><span class='hs-definition'>delimiting</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-layout'>(</span><span class='hs-conid'>Splitter</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-conid'>DelimPolicy</span>
<a name="line-171"></a><span class='hs-definition'>delimiting</span> <span class='hs-varid'>f</span> <span class='hs-varid'>s</span><span class='hs-keyglyph'>@</span><span class='hs-conid'>Splitter</span> <span class='hs-layout'>{</span> <span class='hs-varid'>delimPolicy</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>p</span> <span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>f</span> <span class='hs-varid'>p</span> <span class='hs-varop'>&lt;&amp;&gt;</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>p'</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>s</span> <span class='hs-layout'>{</span> <span class='hs-varid'>delimPolicy</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>p'</span> <span class='hs-layout'>}</span>
<a name="line-172"></a><span class='hs-comment'>{-# INLINE delimiting #-}</span>
<a name="line-173"></a>
<a name="line-174"></a><a name="condensing"></a><span class='hs-comment'>-- | Modify or retrieve the policy for what a 'Splitter' should about consecutive delimiters.</span>
<a name="line-175"></a><span class='hs-definition'>condensing</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-layout'>(</span><span class='hs-conid'>Splitter</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-conid'>CondensePolicy</span>
<a name="line-176"></a><span class='hs-definition'>condensing</span> <span class='hs-varid'>f</span> <span class='hs-varid'>s</span><span class='hs-keyglyph'>@</span><span class='hs-conid'>Splitter</span> <span class='hs-layout'>{</span> <span class='hs-varid'>condensePolicy</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>p</span> <span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>f</span> <span class='hs-varid'>p</span> <span class='hs-varop'>&lt;&amp;&gt;</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>p'</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>s</span> <span class='hs-layout'>{</span> <span class='hs-varid'>condensePolicy</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>p'</span> <span class='hs-layout'>}</span>
<a name="line-177"></a><span class='hs-comment'>{-# INLINE condensing #-}</span>
<a name="line-178"></a>
<a name="line-179"></a><a name="keepInitialBlanks"></a><span class='hs-comment'>-- | Modify or retrieve the policy for whether a 'Splitter' should drop an initial blank.</span>
<a name="line-180"></a><span class='hs-definition'>keepInitialBlanks</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-layout'>(</span><span class='hs-conid'>Splitter</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-conid'>Bool</span>
<a name="line-181"></a><span class='hs-definition'>keepInitialBlanks</span> <span class='hs-varid'>f</span> <span class='hs-varid'>s</span><span class='hs-keyglyph'>@</span><span class='hs-conid'>Splitter</span> <span class='hs-layout'>{</span> <span class='hs-varid'>initBlankPolicy</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>p</span> <span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-varid'>keeps</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;&amp;&gt;</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>p'</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>s</span> <span class='hs-layout'>{</span> <span class='hs-varid'>initBlankPolicy</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>end</span> <span class='hs-varid'>p'</span> <span class='hs-layout'>}</span>
<a name="line-182"></a><span class='hs-comment'>{-# INLINE keepInitialBlanks #-}</span>
<a name="line-183"></a>
<a name="line-184"></a><a name="keepFinalBlanks"></a><span class='hs-comment'>-- | Modify or retrieve the policy for whether a 'Splitter' should drop a final blank.</span>
<a name="line-185"></a><span class='hs-definition'>keepFinalBlanks</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-layout'>(</span><span class='hs-conid'>Splitter</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-conid'>Bool</span>
<a name="line-186"></a><span class='hs-definition'>keepFinalBlanks</span> <span class='hs-varid'>f</span> <span class='hs-varid'>s</span><span class='hs-keyglyph'>@</span><span class='hs-conid'>Splitter</span> <span class='hs-layout'>{</span> <span class='hs-varid'>finalBlankPolicy</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>p</span> <span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-varid'>keeps</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;&amp;&gt;</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>p'</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>s</span> <span class='hs-layout'>{</span> <span class='hs-varid'>finalBlankPolicy</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>end</span> <span class='hs-varid'>p'</span> <span class='hs-layout'>}</span>
<a name="line-187"></a><span class='hs-comment'>{-# INLINE keepFinalBlanks #-}</span>
<a name="line-188"></a>
<a name="line-189"></a><span class='hs-comment'>-- utilities</span>
<a name="line-190"></a>
<a name="line-191"></a><a name="end"></a><span class='hs-definition'>end</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Bool</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>EndPolicy</span>
<a name="line-192"></a><span class='hs-definition'>end</span> <span class='hs-conid'>True</span>  <span class='hs-keyglyph'>=</span> <span class='hs-conid'>KeepBlank</span>
<a name="line-193"></a><span class='hs-definition'>end</span> <span class='hs-conid'>False</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DropBlank</span>
<a name="line-194"></a><span class='hs-comment'>{-# INLINE end #-}</span>
<a name="line-195"></a>
<a name="line-196"></a><a name="keeps"></a><span class='hs-definition'>keeps</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>EndPolicy</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-197"></a><span class='hs-definition'>keeps</span> <span class='hs-conid'>KeepBlank</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
<a name="line-198"></a><span class='hs-definition'>keeps</span> <span class='hs-conid'>DropBlank</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>False</span>
<a name="line-199"></a><span class='hs-comment'>{-# INLINE keeps #-}</span>
</pre></body>
</html>