@@ -157,32 +157,43 @@ t_append s = (s++) `eqP` (unpackS . T.append (packS s))
157uncons (x:xs) = Just (x,xs)
157uncons (x:xs) = Just (x,xs)
158uncons _ = Nothing
158uncons _ = Nothing
160+s_uncons = uncons `eqP` (fmap (second unpackS) . S.uncons)
161+sf_uncons p = (uncons . L.filter p) `eqP` (fmap (second unpackS) . S.uncons . S.filter p)
160−t_uncons s = uncons `eqP` (fmap (second unpackS) . T.uncons)
162+t_uncons = uncons `eqP` (fmap (second unpackS) . T.uncons)
161− where _types = s :: String
162−tl_uncons s = uncons `eqP` (fmap (second unpackS) . TL.uncons)
163+tl_uncons = uncons `eqP` (fmap (second unpackS) . TL.uncons)
163− where _types = s :: String
164s_head = head `eqP` S.head
164s_head = head `eqP` S.head
165+sf_head p = (head . L.filter p) `eqP` (S.head . S.filter p)
165t_head = head `eqP` T.head
166t_head = head `eqP` T.head
166tl_head = head `eqP` TL.head
167tl_head = head `eqP` TL.head
167s_last = last `eqP` S.last
168s_last = last `eqP` S.last
169+sf_last p = (last . L.filter p) `eqP` (S.last . S.filter p)
168t_last = last `eqP` T.last
170t_last = last `eqP` T.last
169tl_last = last `eqP` TL.last
171tl_last = last `eqP` TL.last
170s_tail = tail `eqP` (unpackS . S.tail)
172s_tail = tail `eqP` (unpackS . S.tail)
173+sf_tail p = (tail . L.filter p) `eqP` (unpackS . S.tail . S.filter p)
171t_tail = tail `eqP` (unpackS . T.tail)
174t_tail = tail `eqP` (unpackS . T.tail)
172tl_tail = tail `eqP` (unpackS . TL.tail)
175tl_tail = tail `eqP` (unpackS . TL.tail)
173s_init = init `eqP` (unpackS . S.init)
176s_init = init `eqP` (unpackS . S.init)
177+sf_init p = (init . L.filter p) `eqP` (unpackS . S.init . S.filter p)
174t_init = init `eqP` (unpackS . T.init)
178t_init = init `eqP` (unpackS . T.init)
175tl_init = init `eqP` (unpackS . TL.init)
179tl_init = init `eqP` (unpackS . TL.init)
176s_null = null `eqP` S.null
180s_null = null `eqP` S.null
181+sf_null p = (null . L.filter p) `eqP` (S.null . S.filter p)
177t_null = null `eqP` T.null
182t_null = null `eqP` T.null
178tl_null = null `eqP` TL.null
183tl_null = null `eqP` TL.null
179s_length = length `eqP` S.length
184s_length = length `eqP` S.length
185+sf_length p = (length . L.filter p) `eqP` (S.length . S.filter p)
180t_length = length `eqP` T.length
186t_length = length `eqP` T.length
181tl_length = length `eqP` (fromIntegral . TL.length)
187tl_length = length `eqP` (fromIntegral . TL.length)
189+s_map f = map f `eqP` (unpackS . S.map f)
190+sf_map p f = (map f . L.filter p) `eqP` (unpackS . S.map f . S.filter p)
182t_map f = map f `eqP` (unpackS . T.map f)
191t_map f = map f `eqP` (unpackS . T.map f)
183tl_map f = map f `eqP` (unpackS . TL.map f)
192tl_map f = map f `eqP` (unpackS . TL.map f)
184t_intercalate c = unsquare (L.intercalate c `eq` (unpackS . T.intercalate (packS c) . map packS))
193t_intercalate c = unsquare (L.intercalate c `eq` (unpackS . T.intercalate (packS c) . map packS))
185tl_intercalate c = unsquare (L.intercalate c `eq` (unpackS . TL.intercalate (TL.pack c) . map TL.pack))
194tl_intercalate c = unsquare (L.intercalate c `eq` (unpackS . TL.intercalate (TL.pack c) . map TL.pack))
195+s_intersperse c = L.intersperse c `eqP` (unpackS . S.intersperse c)
196+sf_intersperse p c= (L.intersperse c . L.filter p) `eqP` (unpackS . S.intersperse c . S.filter p)
186t_intersperse c = L.intersperse c `eqP` (unpackS . T.intersperse c)
197t_intersperse c = L.intersperse c `eqP` (unpackS . T.intersperse c)
187tl_intersperse c = L.intersperse c `eqP` (unpackS . TL.intersperse c)
198tl_intersperse c = L.intersperse c `eqP` (unpackS . TL.intersperse c)
188t_transpose = unsquare (L.transpose `eq` (map unpackS . T.transpose . map packS))
199t_transpose = unsquare (L.transpose `eq` (map unpackS . T.transpose . map packS))
@@ -206,6 +217,11 @@ split pat src0
206 | pat `L.isPrefixOf` s = take n src : go (drop l s)
217 | pat `L.isPrefixOf` s = take n src : go (drop l s)
207 | otherwise = search (n+1) s'
218 | otherwise = search (n+1) s'
220+s_toCaseFold_length xs = S.length (S.toCaseFold s) >= length xs
221+ where s = S.streamList xs
222+sf_toCaseFold_length p xs =
223+ (S.length . S.toCaseFold . S.filter p $ s) >= (length . L.filter p $ xs)
224+ where s = S.streamList xs
209t_toCaseFold_length t = T.length (T.toCaseFold t) >= T.length t
225t_toCaseFold_length t = T.length (T.toCaseFold t) >= T.length t
210t_toLower_length t = T.length (T.toLower t) >= T.length t
226t_toLower_length t = T.length (T.toLower t) >= T.length t
211t_toLower_lower t = p (T.toLower t) >= p t
227t_toLower_lower t = p (T.toLower t) >= p t
@@ -217,42 +233,60 @@ t_toUpper_upper t = p (T.toUpper t) >= p t
217justifyLeft k c s = s ++ replicate (k - length s) c
233justifyLeft k c s = s ++ replicate (k - length s) c
219s_justifyLeft k c = justifyLeft k c `eqP` (unpackS . S.justifyLeft k c)
235s_justifyLeft k c = justifyLeft k c `eqP` (unpackS . S.justifyLeft k c)
236+sf_justifyLeft p k c =
237+ (justifyLeft k c . L.filter p) `eqP` (unpackS . S.justifyLeft k c . S.filter p)
220t_justifyLeft k c = justifyLeft k c `eqP` (unpackS . T.justifyLeft k c)
238t_justifyLeft k c = justifyLeft k c `eqP` (unpackS . T.justifyLeft k c)
221t_justifyRight k c = jr k c `eqP` (unpackS . T.justifyRight k c)
239t_justifyRight k c = jr k c `eqP` (unpackS . T.justifyRight k c)
222 where jr m n s = replicate (m - length s) n ++ s
240 where jr m n s = replicate (m - length s) n ++ s
242+sf_foldl p f z = (L.foldl f z . L.filter p) `eqP` (S.foldl f z . S.filter p)
243+ where _types = f :: Char -> Char -> Char
224t_foldl f z = L.foldl f z `eqP` (T.foldl f z)
244t_foldl f z = L.foldl f z `eqP` (T.foldl f z)
225− where _types = f :: Char -> Char -> Char
245+ where _types = f :: Char -> Char -> Char
226tl_foldl f z = L.foldl f z `eqP` (TL.foldl f z)
246tl_foldl f z = L.foldl f z `eqP` (TL.foldl f z)
247+ where _types = f :: Char -> Char -> Char
248+sf_foldl' p f z = (L.foldl' f z . L.filter p) `eqP` (S.foldl' f z . S.filter p)
227− where _types = f :: Char -> Char -> Char
249+ where _types = f :: Char -> Char -> Char
228t_foldl' f z = L.foldl' f z `eqP` T.foldl' f z
250t_foldl' f z = L.foldl' f z `eqP` T.foldl' f z
229− where _types = f :: Char -> Char -> Char
251+ where _types = f :: Char -> Char -> Char
230tl_foldl' f z = L.foldl' f z `eqP` TL.foldl' f z
252tl_foldl' f z = L.foldl' f z `eqP` TL.foldl' f z
231− where _types = f :: Char -> Char -> Char
253+ where _types = f :: Char -> Char -> Char
254+sf_foldl1 p f = (L.foldl1 f . L.filter p) `eqP` (S.foldl1 f . S.filter p)
232t_foldl1 f = L.foldl1 f `eqP` T.foldl1 f
255t_foldl1 f = L.foldl1 f `eqP` T.foldl1 f
233tl_foldl1 f = L.foldl1 f `eqP` TL.foldl1 f
256tl_foldl1 f = L.foldl1 f `eqP` TL.foldl1 f
257+sf_foldl1' p f = (L.foldl1' f . L.filter p) `eqP` (S.foldl1' f . S.filter p)
234t_foldl1' f = L.foldl1' f `eqP` T.foldl1' f
258t_foldl1' f = L.foldl1' f `eqP` T.foldl1' f
235tl_foldl1' f = L.foldl1' f `eqP` TL.foldl1' f
259tl_foldl1' f = L.foldl1' f `eqP` TL.foldl1' f
260+sf_foldr p f z = (L.foldr f z . L.filter p) `eqP` (S.foldr f z . S.filter p)
261+ where _types = f :: Char -> Char -> Char
236t_foldr f z = L.foldr f z `eqP` T.foldr f z
262t_foldr f z = L.foldr f z `eqP` T.foldr f z
237− where _types = f :: Char -> Char -> Char
263+ where _types = f :: Char -> Char -> Char
238tl_foldr f z = L.foldr f z `eqP` TL.foldr f z
264tl_foldr f z = L.foldr f z `eqP` TL.foldr f z
239− where _types = f :: Char -> Char -> Char
265+ where _types = f :: Char -> Char -> Char
266+sf_foldr1 p f = (L.foldr1 f . L.filter p) `eqP` (S.foldr1 f . S.filter p)
240t_foldr1 f = L.foldr1 f `eqP` T.foldr1 f
267t_foldr1 f = L.foldr1 f `eqP` T.foldr1 f
241tl_foldr1 f = L.foldr1 f `eqP` TL.foldr1 f
268tl_foldr1 f = L.foldr1 f `eqP` TL.foldr1 f
270+sf_concat p = unsquare ((L.concat . map (L.filter p)) `eq` (unpackS . S.concat . map (S.filter p . packS)))
243t_concat = unsquare (L.concat `eq` (unpackS . T.concat . map packS))
271t_concat = unsquare (L.concat `eq` (unpackS . T.concat . map packS))
244tl_concat = unsquare (L.concat `eq` (unpackS . TL.concat . map TL.pack))
272tl_concat = unsquare (L.concat `eq` (unpackS . TL.concat . map TL.pack))
273+sf_concatMap p f = unsquare ((L.concatMap f . L.filter p) `eqP` (unpackS . S.concatMap (packS . f) . S.filter p))
245t_concatMap f = unsquare (L.concatMap f `eqP` (unpackS . T.concatMap (packS . f)))
274t_concatMap f = unsquare (L.concatMap f `eqP` (unpackS . T.concatMap (packS . f)))
246tl_concatMap f = unsquare (L.concatMap f `eqP` (unpackS . TL.concatMap (TL.pack . f)))
275tl_concatMap f = unsquare (L.concatMap f `eqP` (unpackS . TL.concatMap (TL.pack . f)))
276+sf_any q p = (L.any p . L.filter q) `eqP` (S.any p . S.filter q)
247t_any p = L.any p `eqP` T.any p
277t_any p = L.any p `eqP` T.any p
248tl_any p = L.any p `eqP` TL.any p
278tl_any p = L.any p `eqP` TL.any p
279+sf_all q p = (L.all p . L.filter q) `eqP` (S.all p . S.filter q)
249t_all p = L.all p `eqP` T.all p
280t_all p = L.all p `eqP` T.all p
250tl_all p = L.all p `eqP` TL.all p
281tl_all p = L.all p `eqP` TL.all p
282+sf_maximum p = (L.maximum . L.filter p) `eqP` (S.maximum . S.filter p)
251t_maximum = L.maximum `eqP` T.maximum
283t_maximum = L.maximum `eqP` T.maximum
252tl_maximum = L.maximum `eqP` TL.maximum
284tl_maximum = L.maximum `eqP` TL.maximum
285+sf_minimum p = (L.minimum . L.filter p) `eqP` (S.minimum . S.filter p)
253t_minimum = L.minimum `eqP` T.minimum
286t_minimum = L.minimum `eqP` T.minimum
254tl_minimum = L.minimum `eqP` TL.minimum
287tl_minimum = L.minimum `eqP` TL.minimum
289+sf_scanl p f z = (L.scanl f z . L.filter p) `eqP` (unpackS . S.scanl f z . S.filter p)
256t_scanl f z = L.scanl f z `eqP` (unpackS . T.scanl f z)
290t_scanl f z = L.scanl f z `eqP` (unpackS . T.scanl f z)
257tl_scanl f z = L.scanl f z `eqP` (unpackS . TL.scanl f z)
291tl_scanl f z = L.scanl f z `eqP` (unpackS . TL.scanl f z)
258t_scanl1 f = L.scanl1 f `eqP` (unpackS . T.scanl1 f)
292t_scanl1 f = L.scanl1 f `eqP` (unpackS . T.scanl1 f)
@@ -289,22 +323,25 @@ unpack2 :: (Stringy s) => (s,s) -> (String,String)
289unpack2 = unpackS *** unpackS
323unpack2 = unpackS *** unpackS
291s_take n = L.take n `eqP` (unpackS . S.take n)
325s_take n = L.take n `eqP` (unpackS . S.take n)
326+sf_take p n = (L.take n . L.filter p) `eqP` (unpackS . S.take n . S.filter p)
292t_take n = L.take n `eqP` (unpackS . T.take n)
327t_take n = L.take n `eqP` (unpackS . T.take n)
293tl_take n = L.take n `eqP` (unpackS . TL.take (fromIntegral n))
328tl_take n = L.take n `eqP` (unpackS . TL.take (fromIntegral n))
294s_drop n = L.drop n `eqP` (unpackS . S.drop n)
329s_drop n = L.drop n `eqP` (unpackS . S.drop n)
330+sf_drop p n = (L.drop n . L.filter p) `eqP` (unpackS . S.drop n . S.filter p)
295t_drop n = L.drop n `eqP` (unpackS . T.drop n)
331t_drop n = L.drop n `eqP` (unpackS . T.drop n)
296tl_drop n = L.drop n `eqP` (unpackS . TL.drop n)
332tl_drop n = L.drop n `eqP` (unpackS . TL.drop n)
297s_takeWhile p = L.takeWhile p `eqP` (unpackS . S.takeWhile p)
333s_takeWhile p = L.takeWhile p `eqP` (unpackS . S.takeWhile p)
334+sf_takeWhile q p = (L.takeWhile p . L.filter q) `eqP` (unpackS . S.takeWhile p . S.filter q)
298t_takeWhile p = L.takeWhile p `eqP` (unpackS . T.takeWhile p)
335t_takeWhile p = L.takeWhile p `eqP` (unpackS . T.takeWhile p)
299tl_takeWhile p = L.takeWhile p `eqP` (unpackS . TL.takeWhile p)
336tl_takeWhile p = L.takeWhile p `eqP` (unpackS . TL.takeWhile p)
300s_dropWhile p = L.dropWhile p `eqP` (unpackS . S.dropWhile p)
337s_dropWhile p = L.dropWhile p `eqP` (unpackS . S.dropWhile p)
338+sf_dropWhile q p = (L.dropWhile p . L.filter q) `eqP` (unpackS . S.dropWhile p . S.filter q)
301t_dropWhile p = L.dropWhile p `eqP` (unpackS . T.dropWhile p)
339t_dropWhile p = L.dropWhile p `eqP` (unpackS . T.dropWhile p)
302tl_dropWhile p = L.dropWhile p `eqP` (unpackS . S.dropWhile p)
340tl_dropWhile p = L.dropWhile p `eqP` (unpackS . S.dropWhile p)
303−s_dropWhileEnd p = T.dropWhileEnd p `eq` (S.reverse . S.dropWhile p . S.reverseStream)
304−t_dropWhileEnd p = (T.reverse . T.dropWhile p . T.reverse) `eq` T.dropWhileEnd p
341+t_dropWhileEnd p = (L.reverse . L.dropWhile p . L.reverse) `eqP` (unpackS . T.dropWhileEnd p)
305−t_dropAround p = (T.dropWhile p . T.dropWhileEnd p) `eq` T.dropAround p
342+t_dropAround p = (L.dropWhile p . L.reverse . L.dropWhile p . L.reverse) `eqP` (unpackS . T.dropAround p)
306−t_stripStart = T.dropWhile isSpace `eq` T.stripStart
343+t_stripStart = T.dropWhile isSpace `eq` T.stripStart
307−t_stripEnd = T.dropWhileEnd isSpace `eq` T.stripEnd
344+t_stripEnd = T.dropWhileEnd isSpace `eq` T.stripEnd
308t_strip = T.dropAround isSpace `eq` T.strip
345t_strip = T.dropAround isSpace `eq` T.strip
309t_splitAt n = L.splitAt n `eqP` (unpack2 . T.splitAt n)
346t_splitAt n = L.splitAt n `eqP` (unpack2 . T.splitAt n)
310tl_splitAt n = L.splitAt n `eqP` (unpack2 . TL.splitAt (fromIntegral n))
347tl_splitAt n = L.splitAt n `eqP` (unpack2 . TL.splitAt (fromIntegral n))
@@ -378,7 +415,8 @@ tl_unlines = unsquare (L.unlines `eq` (unpackS . TL.unlines . map packS))
378t_unwords = unsquare (L.unwords `eq` (unpackS . T.unwords . map packS))
415t_unwords = unsquare (L.unwords `eq` (unpackS . T.unwords . map packS))
379tl_unwords = unsquare (L.unwords `eq` (unpackS . TL.unwords . map packS))
416tl_unwords = unsquare (L.unwords `eq` (unpackS . TL.unwords . map packS))
381−s_isPrefixOf s = L.isPrefixOf s`eqP` (S.isPrefixOf (S.stream $ packS s) . S.stream)
418+s_isPrefixOf s = L.isPrefixOf s `eqP` (S.isPrefixOf (S.stream $ packS s) . S.stream)
419+sf_isPrefixOf p s = (L.isPrefixOf s . L.filter p) `eqP` (S.isPrefixOf (S.stream $ packS s) . S.filter p . S.stream)
382t_isPrefixOf s = L.isPrefixOf s`eqP` T.isPrefixOf (packS s)
420t_isPrefixOf s = L.isPrefixOf s`eqP` T.isPrefixOf (packS s)
383tl_isPrefixOf s = L.isPrefixOf s`eqP` TL.isPrefixOf (packS s)
421tl_isPrefixOf s = L.isPrefixOf s`eqP` TL.isPrefixOf (packS s)
384t_isSuffixOf s = L.isSuffixOf s`eqP` T.isSuffixOf (packS s)
422t_isSuffixOf s = L.isSuffixOf s`eqP` T.isSuffixOf (packS s)
@@ -386,33 +424,44 @@ tl_isSuffixOf s = L.isSuffixOf s`eqP` TL.isSuffixOf (packS s)
386t_isInfixOf s = L.isInfixOf s `eqP` T.isInfixOf (packS s)
424t_isInfixOf s = L.isInfixOf s `eqP` T.isInfixOf (packS s)
387tl_isInfixOf s = L.isInfixOf s `eqP` TL.isInfixOf (packS s)
425tl_isInfixOf s = L.isInfixOf s `eqP` TL.isInfixOf (packS s)
427+sf_elem p c = (L.elem c . L.filter p) `eqP` (S.elem c . S.filter p)
389t_elem c = L.elem c `eqP` T.elem c
428t_elem c = L.elem c `eqP` T.elem c
390tl_elem c = L.elem c `eqP` TL.elem c
429tl_elem c = L.elem c `eqP` TL.elem c
430+sf_filter q p = (L.filter p . L.filter q) `eqP` (unpackS . S.filter p . S.filter q)
391t_filter p = L.filter p `eqP` (unpackS . T.filter p)
431t_filter p = L.filter p `eqP` (unpackS . T.filter p)
392tl_filter p = L.filter p `eqP` (unpackS . TL.filter p)
432tl_filter p = L.filter p `eqP` (unpackS . TL.filter p)
433+sf_find q p = (L.find p . L.filter q) `eqP` (S.find p . S.filter q)
393t_find p = L.find p `eqP` T.find p
434t_find p = L.find p `eqP` T.find p
394tl_find p = L.find p `eqP` TL.find p
435tl_find p = L.find p `eqP` TL.find p
395t_partition p = L.partition p `eqP` (unpack2 . T.partition p)
436t_partition p = L.partition p `eqP` (unpack2 . T.partition p)
396tl_partition p = L.partition p `eqP` (unpack2 . TL.partition p)
437tl_partition p = L.partition p `eqP` (unpack2 . TL.partition p)
439+sf_index p s = forAll (choose (-l,l*2)) ((L.filter p s L.!!) `eq` S.index (S.filter p $ packS s))
440+ where l = L.length s
398t_index s = forAll (choose (-l,l*2)) ((s L.!!) `eq` T.index (packS s))
441t_index s = forAll (choose (-l,l*2)) ((s L.!!) `eq` T.index (packS s))
399 where l = L.length s
442 where l = L.length s
401tl_index s = forAll (choose (-l,l*2)) ((s L.!!) `eq` (TL.index (packS s) . fromIntegral))
444tl_index s = forAll (choose (-l,l*2)) ((s L.!!) `eq` (TL.index (packS s) . fromIntegral))
402 where l = L.length s
445 where l = L.length s
447+sf_findIndex q p = (L.findIndex p . L.filter q) `eqP` (S.findIndex p . S.filter q)
404t_findIndex p = L.findIndex p `eqP` T.findIndex p
448t_findIndex p = L.findIndex p `eqP` T.findIndex p
405tl_findIndex p = (fmap fromIntegral . L.findIndex p) `eqP` TL.findIndex p
449tl_findIndex p = (fmap fromIntegral . L.findIndex p) `eqP` TL.findIndex p
450+sf_findIndices q p= (L.findIndices p . L.filter q) `eqP` (S.findIndices p . S.filter q)
406t_findIndices p = L.findIndices p `eqP` T.findIndices p
451t_findIndices p = L.findIndices p `eqP` T.findIndices p
407tl_findIndices p = (fmap fromIntegral . L.findIndices p) `eqP` TL.findIndices p
452tl_findIndices p = (fmap fromIntegral . L.findIndices p) `eqP` TL.findIndices p
453+sf_elemIndex p c = (L.elemIndex c . L.filter p) `eqP` (S.elemIndex c . S.filter p)
408t_elemIndex c = L.elemIndex c `eqP` T.elemIndex c
454t_elemIndex c = L.elemIndex c `eqP` T.elemIndex c
409tl_elemIndex c = (fmap fromIntegral . L.elemIndex c) `eqP` TL.elemIndex c
455tl_elemIndex c = (fmap fromIntegral . L.elemIndex c) `eqP` TL.elemIndex c
456+sf_elemIndices p c= (L.elemIndices c . L.filter p) `eqP` (S.elemIndices c . S.filter p)
410t_elemIndices c = L.elemIndices c`eqP` T.elemIndices c
457t_elemIndices c = L.elemIndices c`eqP` T.elemIndices c
411tl_elemIndices c = (fmap fromIntegral . L.elemIndices c) `eqP` TL.elemIndices c
458tl_elemIndices c = (fmap fromIntegral . L.elemIndices c) `eqP` TL.elemIndices c
459+sf_count p c = (L.length . L.elemIndices c . L.filter p) `eqP` (S.count c . S.filter p)
412t_count c = (L.length . L.elemIndices c) `eqP` T.count c
460t_count c = (L.length . L.elemIndices c) `eqP` T.count c
413tl_count c = (fromIntegral . L.length . L.elemIndices c) `eqP` TL.count c
461tl_count c = (fromIntegral . L.length . L.elemIndices c) `eqP` TL.count c
414t_zip s = L.zip s `eqP` T.zip (packS s)
462t_zip s = L.zip s `eqP` T.zip (packS s)
415tl_zip s = L.zip s `eqP` TL.zip (packS s)
463tl_zip s = L.zip s `eqP` TL.zip (packS s)
464+sf_zipWith p c s = (L.zipWith c (L.filter p s) . L.filter p) `eqP` (unpackS . S.zipWith c (S.filter p $ packS s) . S.filter p)
416t_zipWith c s = L.zipWith c s `eqP` (unpackS . T.zipWith c (packS s))
465t_zipWith c s = L.zipWith c s `eqP` (unpackS . T.zipWith c (packS s))
417tl_zipWith c s = L.zipWith c s `eqP` (unpackS . TL.zipWith c (packS s))
466tl_zipWith c s = L.zipWith c s `eqP` (unpackS . TL.zipWith c (packS s))
@@ -486,33 +535,45 @@ tests = [
486 testProperty "s_append" s_append,
535 testProperty "s_append" s_append,
487 testProperty "sf_append" sf_append,
536 testProperty "sf_append" sf_append,
488 testProperty "t_append" t_append,
537 testProperty "t_append" t_append,
538+ testProperty "s_uncons" s_uncons,
539+ testProperty "sf_uncons" sf_uncons,
489 testProperty "t_uncons" t_uncons,
540 testProperty "t_uncons" t_uncons,
490 testProperty "tl_uncons" tl_uncons,
541 testProperty "tl_uncons" tl_uncons,
491 testProperty "s_head" s_head,
542 testProperty "s_head" s_head,
543+ testProperty "sf_head" sf_head,
492 testProperty "t_head" t_head,
544 testProperty "t_head" t_head,
493 testProperty "tl_head" tl_head,
545 testProperty "tl_head" tl_head,
494 testProperty "s_last" s_last,
546 testProperty "s_last" s_last,
547+ testProperty "sf_last" sf_last,
495 testProperty "t_last" t_last,
548 testProperty "t_last" t_last,
496 testProperty "tl_last" tl_last,
549 testProperty "tl_last" tl_last,
497 testProperty "s_tail" s_tail,
550 testProperty "s_tail" s_tail,
551+ testProperty "sf_tail" sf_tail,
498 testProperty "t_tail" t_tail,
552 testProperty "t_tail" t_tail,
499 testProperty "tl_tail" tl_tail,
553 testProperty "tl_tail" tl_tail,
500 testProperty "s_init" s_init,
554 testProperty "s_init" s_init,
555+ testProperty "sf_init" sf_init,
501 testProperty "t_init" t_init,
556 testProperty "t_init" t_init,
502 testProperty "tl_init" tl_init,
557 testProperty "tl_init" tl_init,
503 testProperty "s_null" s_null,
558 testProperty "s_null" s_null,
559+ testProperty "sf_null" sf_null,
504 testProperty "t_null" t_null,
560 testProperty "t_null" t_null,
505 testProperty "tl_null" tl_null,
561 testProperty "tl_null" tl_null,
506 testProperty "s_length" s_length,
562 testProperty "s_length" s_length,
563+ testProperty "sf_length" sf_length,
507 testProperty "t_length" t_length,
564 testProperty "t_length" t_length,
508 testProperty "tl_length" tl_length
565 testProperty "tl_length" tl_length
511 testGroup "transformations" [
568 testGroup "transformations" [
569+ testProperty "s_map" s_map,
570+ testProperty "sf_map" sf_map,
512 testProperty "t_map" t_map,
571 testProperty "t_map" t_map,
513 testProperty "tl_map" tl_map,
572 testProperty "tl_map" tl_map,
514 testProperty "t_intercalate" t_intercalate,
573 testProperty "t_intercalate" t_intercalate,
515 testProperty "tl_intercalate" tl_intercalate,
574 testProperty "tl_intercalate" tl_intercalate,
575+ testProperty "s_intersperse" s_intersperse,
576+ testProperty "sf_intersperse" sf_intersperse,
516 testProperty "t_intersperse" t_intersperse,
577 testProperty "t_intersperse" t_intersperse,
517 testProperty "tl_intersperse" tl_intersperse,
578 testProperty "tl_intersperse" tl_intersperse,
518 testProperty "t_transpose" t_transpose,
579 testProperty "t_transpose" t_transpose,
@@ -523,6 +584,8 @@ tests = [
523 testProperty "t_replace" t_replace,
584 testProperty "t_replace" t_replace,
525 testGroup "case conversion" [
586 testGroup "case conversion" [
587+ testProperty "s_toCaseFold_length" s_toCaseFold_length,
588+ testProperty "sf_toCaseFold_length" sf_toCaseFold_length,
526 testProperty "t_toCaseFold_length" t_toCaseFold_length,
589 testProperty "t_toCaseFold_length" t_toCaseFold_length,
527 testProperty "t_toLower_length" t_toLower_length,
590 testProperty "t_toLower_length" t_toLower_length,
528 testProperty "t_toLower_lower" t_toLower_lower,
591 testProperty "t_toLower_lower" t_toLower_lower,
@@ -532,36 +595,49 @@ tests = [
533 testGroup "justification" [
596 testGroup "justification" [
534 testProperty "s_justifyLeft" s_justifyLeft,
597 testProperty "s_justifyLeft" s_justifyLeft,
598+ testProperty "sf_justifyLeft" sf_justifyLeft,
535 testProperty "t_justifyLeft" t_justifyLeft,
599 testProperty "t_justifyLeft" t_justifyLeft,
536 testProperty "t_justifyRight" t_justifyRight
600 testProperty "t_justifyRight" t_justifyRight
540 testGroup "folds" [
604 testGroup "folds" [
605+ testProperty "sf_foldl" sf_foldl,
541 testProperty "t_foldl" t_foldl,
606 testProperty "t_foldl" t_foldl,
542 testProperty "tl_foldl" tl_foldl,
607 testProperty "tl_foldl" tl_foldl,
608+ testProperty "sf_foldl'" sf_foldl',
543 testProperty "t_foldl'" t_foldl',
609 testProperty "t_foldl'" t_foldl',
544 testProperty "tl_foldl'" tl_foldl',
610 testProperty "tl_foldl'" tl_foldl',
611+ testProperty "sf_foldl1" sf_foldl1,
545 testProperty "t_foldl1" t_foldl1,
612 testProperty "t_foldl1" t_foldl1,
546 testProperty "tl_foldl1" tl_foldl1,
613 testProperty "tl_foldl1" tl_foldl1,
547 testProperty "t_foldl1'" t_foldl1',
614 testProperty "t_foldl1'" t_foldl1',
615+ testProperty "sf_foldl1'" sf_foldl1',
548 testProperty "tl_foldl1'" tl_foldl1',
616 testProperty "tl_foldl1'" tl_foldl1',
617+ testProperty "sf_foldr" sf_foldr,
549 testProperty "t_foldr" t_foldr,
618 testProperty "t_foldr" t_foldr,
550 testProperty "tl_foldr" tl_foldr,
619 testProperty "tl_foldr" tl_foldr,
620+ testProperty "sf_foldr1" sf_foldr1,
551 testProperty "t_foldr1" t_foldr1,
621 testProperty "t_foldr1" t_foldr1,
552 testProperty "tl_foldr1" tl_foldr1,
622 testProperty "tl_foldr1" tl_foldr1,
554 testGroup "special" [
624 testGroup "special" [
625+ testProperty "sf_concat" sf_concat,
555 testProperty "t_concat" t_concat,
626 testProperty "t_concat" t_concat,
556 testProperty "tl_concat" tl_concat,
627 testProperty "tl_concat" tl_concat,
628+ testProperty "sf_concatMap" sf_concatMap,
557 testProperty "t_concatMap" t_concatMap,
629 testProperty "t_concatMap" t_concatMap,
558 testProperty "tl_concatMap" tl_concatMap,
630 testProperty "tl_concatMap" tl_concatMap,
631+ testProperty "sf_any" sf_any,
559 testProperty "t_any" t_any,
632 testProperty "t_any" t_any,
560 testProperty "tl_any" tl_any,
633 testProperty "tl_any" tl_any,
634+ testProperty "sf_all" sf_all,
561 testProperty "t_all" t_all,
635 testProperty "t_all" t_all,
562 testProperty "tl_all" tl_all,
636 testProperty "tl_all" tl_all,
637+ testProperty "sf_maximum" sf_maximum,
563 testProperty "t_maximum" t_maximum,
638 testProperty "t_maximum" t_maximum,
564 testProperty "tl_maximum" tl_maximum,
639 testProperty "tl_maximum" tl_maximum,
640+ testProperty "sf_minimum" sf_minimum,
565 testProperty "t_minimum" t_minimum,
641 testProperty "t_minimum" t_minimum,
566 testProperty "tl_minimum" tl_minimum
642 testProperty "tl_minimum" tl_minimum
@@ -569,6 +645,7 @@ tests = [
570 testGroup "construction" [
646 testGroup "construction" [
571 testGroup "scans" [
647 testGroup "scans" [
648+ testProperty "sf_scanl" sf_scanl,
572 testProperty "t_scanl" t_scanl,
649 testProperty "t_scanl" t_scanl,
573 testProperty "tl_scanl" tl_scanl,
650 testProperty "tl_scanl" tl_scanl,
574 testProperty "t_scanl1" t_scanl1,
651 testProperty "t_scanl1" t_scanl1,
@@ -599,18 +676,21 @@ tests = [
599 testGroup "substrings" [
676 testGroup "substrings" [
600 testGroup "breaking" [
677 testGroup "breaking" [
601 testProperty "s_take" s_take,
678 testProperty "s_take" s_take,
679+ testProperty "sf_take" sf_take,
602 testProperty "t_take" t_take,
680 testProperty "t_take" t_take,
603 testProperty "tl_take" tl_take,
681 testProperty "tl_take" tl_take,
604 testProperty "s_drop" s_drop,
682 testProperty "s_drop" s_drop,
683+ testProperty "sf_drop" sf_drop,
605 testProperty "t_drop" t_drop,
684 testProperty "t_drop" t_drop,
606 testProperty "tl_drop" tl_drop,
685 testProperty "tl_drop" tl_drop,
607 testProperty "s_takeWhile" s_takeWhile,
686 testProperty "s_takeWhile" s_takeWhile,
687+ testProperty "sf_takeWhile" sf_takeWhile,
608 testProperty "t_takeWhile" t_takeWhile,
688 testProperty "t_takeWhile" t_takeWhile,
609 testProperty "tl_takeWhile" tl_takeWhile,
689 testProperty "tl_takeWhile" tl_takeWhile,
690+ testProperty "sf_dropWhile" sf_dropWhile,
610 testProperty "s_dropWhile" s_dropWhile,
691 testProperty "s_dropWhile" s_dropWhile,
611 testProperty "t_dropWhile" t_dropWhile,
692 testProperty "t_dropWhile" t_dropWhile,
612 testProperty "tl_dropWhile" tl_dropWhile,
693 testProperty "tl_dropWhile" tl_dropWhile,
613− testProperty "s_dropWhileEnd" s_dropWhileEnd,
614 testProperty "t_dropWhileEnd" t_dropWhileEnd,
694 testProperty "t_dropWhileEnd" t_dropWhileEnd,
615 testProperty "t_dropAround" t_dropAround,
695 testProperty "t_dropAround" t_dropAround,
616 testProperty "t_stripStart" t_stripStart,
696 testProperty "t_stripStart" t_stripStart,
@@ -665,6 +745,7 @@ tests = [
666 testGroup "predicates" [
746 testGroup "predicates" [
667 testProperty "s_isPrefixOf" s_isPrefixOf,
747 testProperty "s_isPrefixOf" s_isPrefixOf,
748+ testProperty "sf_isPrefixOf" sf_isPrefixOf,
668 testProperty "t_isPrefixOf" t_isPrefixOf,
749 testProperty "t_isPrefixOf" t_isPrefixOf,
669 testProperty "tl_isPrefixOf" tl_isPrefixOf,
750 testProperty "tl_isPrefixOf" tl_isPrefixOf,
670 testProperty "t_isSuffixOf" t_isSuffixOf,
751 testProperty "t_isSuffixOf" t_isSuffixOf,
@@ -674,10 +755,13 @@ tests = [
676 testGroup "searching" [
757 testGroup "searching" [
758+ testProperty "sf_elem" sf_elem,
677 testProperty "t_elem" t_elem,
759 testProperty "t_elem" t_elem,
678 testProperty "tl_elem" tl_elem,
760 testProperty "tl_elem" tl_elem,
761+ testProperty "sf_filter" sf_filter,
679 testProperty "t_filter" t_filter,
762 testProperty "t_filter" t_filter,
680 testProperty "tl_filter" tl_filter,
763 testProperty "tl_filter" tl_filter,
764+ testProperty "sf_find" sf_find,
681 testProperty "t_find" t_find,
765 testProperty "t_find" t_find,
682 testProperty "tl_find" tl_find,
766 testProperty "tl_find" tl_find,
683 testProperty "t_partition" t_partition,
767 testProperty "t_partition" t_partition,
@@ -685,16 +769,22 @@ tests = [
687 testGroup "indexing" [
771 testGroup "indexing" [
772+ testProperty "sf_index" sf_index,
688 testProperty "t_index" t_index,
773 testProperty "t_index" t_index,
689 testProperty "tl_index" tl_index,
774 testProperty "tl_index" tl_index,
775+ testProperty "sf_findIndex" sf_findIndex,
690 testProperty "t_findIndex" t_findIndex,
776 testProperty "t_findIndex" t_findIndex,
691 testProperty "tl_findIndex" tl_findIndex,
777 testProperty "tl_findIndex" tl_findIndex,
778+ testProperty "sf_findIndices" sf_findIndices,
692 testProperty "t_findIndices" t_findIndices,
779 testProperty "t_findIndices" t_findIndices,
693 testProperty "tl_findIndices" tl_findIndices,
780 testProperty "tl_findIndices" tl_findIndices,
781+ testProperty "sf_elemIndex" sf_elemIndex,
694 testProperty "t_elemIndex" t_elemIndex,
782 testProperty "t_elemIndex" t_elemIndex,
695 testProperty "tl_elemIndex" tl_elemIndex,
783 testProperty "tl_elemIndex" tl_elemIndex,
784+ testProperty "sf_elemIndices" sf_elemIndices,
696 testProperty "t_elemIndices" t_elemIndices,
785 testProperty "t_elemIndices" t_elemIndices,
697 testProperty "tl_elemIndices" tl_elemIndices,
786 testProperty "tl_elemIndices" tl_elemIndices,
787+ testProperty "sf_count" sf_count,
698 testProperty "t_count" t_count,
788 testProperty "t_count" t_count,
699 testProperty "tl_count" tl_count
789 testProperty "tl_count" tl_count
@@ -702,6 +792,7 @@ tests = [
702 testGroup "zips" [
792 testGroup "zips" [
703 testProperty "t_zip" t_zip,
793 testProperty "t_zip" t_zip,
704 testProperty "tl_zip" tl_zip,
794 testProperty "tl_zip" tl_zip,
795+ testProperty "sf_zipWith" sf_zipWith,
705 testProperty "t_zipWith" t_zipWith,
796 testProperty "t_zipWith" t_zipWith,
706 testProperty "tl_zipWith" tl_zipWith
797 testProperty "tl_zipWith" tl_zipWith