1module Data.List.HT (
2   -- * Improved standard functions
3   L.inits,
4   L.tails,
5   L.groupBy,
6   L.group,
7   L.unzip,
8   L.partition,
9   L.span,
10   L.break,
11   -- * Split
12   L.chop,
13   L.breakAfter,
14   L.takeUntil,
15   L.segmentAfter,
16   L.segmentBefore,
17   L.segmentAfterJust, segmentAfterMaybe,
18   L.segmentBeforeJust, segmentBeforeMaybe,
19   L.segmentAfterRight,
20   L.segmentBeforeRight,
21   L.removeEach,
22   L.splitEverywhere,
23   --  * inspect ends of a list
24   L.splitLast,
25   L.viewL,
26   L.viewR,
27   L.switchL,
28   L.switchR,
29   -- * List processing starting at the end
30   L.dropRev,
31   L.takeRev,
32   L.splitAtRev,
33   dropWhileRev,
34   takeWhileRev,
35   -- * List processing with Maybe and Either
36   L.maybePrefixOf,
37   L.maybeSuffixOf,
38   L.partitionMaybe,
39   L.takeWhileJust,
40   L.dropWhileNothing,
41   L.breakJust,
42   L.spanJust,
43   L.unzipEithers,
44   -- * Sieve and slice
45   L.sieve,
46   L.sliceHorizontal,
47   L.sliceVertical,
48   -- * Search&replace
49   L.search,
50   L.replace,
51   L.multiReplace,
52   -- * Lists of lists
53   L.shear,
54   L.shearTranspose,
55   L.outerProduct,
56   -- * Miscellaneous
57   L.takeWhileMulti,
58   L.rotate,
59   L.mergeBy,
60   L.allEqual,
61   L.isAscending,
62   L.isAscendingLazy,
63   L.mapAdjacent,
64   L.mapAdjacent1,
65   L.range,
66   L.padLeft,
67   L.padRight,
68   L.iterateAssociative,
69   L.iterateLeaky,
70   L.lengthAtLeast,
71   L.lengthAtMost,
72   ) where
73
74import qualified Data.List.HT.Private as L
75import qualified Data.List.Reverse.StrictElement as Rev
76
77{-# DEPRECATED dropWhileRev "Use dropWhile from Data.List.Reverse.StrictElement or Data.List.Reverse.StrictSpine instead" #-}
78dropWhileRev :: (a -> Bool) -> [a] -> [a]
79dropWhileRev = Rev.dropWhile
80
81{-# DEPRECATED takeWhileRev "Use takeWhile from Data.List.Reverse.StrictElement or Data.List.Reverse.StrictSpine instead" #-}
82takeWhileRev :: (a -> Bool) -> [a] -> [a]
83takeWhileRev = Rev.takeWhile
84
85{-# DEPRECATED segmentBeforeMaybe "use segmentBeforeJust instead" #-}
86segmentBeforeMaybe :: (a -> Maybe b) -> [a] -> ([a], [(b, [a])])
87segmentBeforeMaybe = L.segmentBeforeJust
88
89{-# DEPRECATED segmentAfterMaybe "use segmentAfterJust instead" #-}
90segmentAfterMaybe :: (a -> Maybe b) -> [a] -> ([([a], b)], [a])
91segmentAfterMaybe = L.segmentAfterJust
92