ref: fe42bfc4b33214f1c0ae47f71f671a2c73287212
parent: d8e05cf2505814a2eb1a93d451e05de2226a576b
author: Lennart Augustsson <augustss@Lennarts-Mini.augustsson.net>
date: Sat Nov 16 07:26:39 EST 2024
Add spanEnd and breakEnd
--- a/lib/Data/List.hs
+++ b/lib/Data/List.hs
@@ -11,6 +11,7 @@
iterate, iterate', repeat, replicate, cycle,
unfoldr,
take, drop, splitAt, takeWhile, takeWhileEnd, dropWhile, dropWhileEnd, span, spanUntil, break, splitWith,
+ spanEnd, breakEnd,
stripPrefix, stripSuffix, group, inits, tails,
isPrefixOf, isSuffixOf, isInfixOf, isSubsequenceOf,
elem, notElem, lookup,
@@ -378,6 +379,12 @@
break :: forall a . (a -> Bool) -> [a] -> ([a],[a])
break p = span (not . p)
+
+spanEnd :: (a -> Bool) -> [a] -> ([a], [a])
+spanEnd p xs = (dropWhileEnd p xs, takeWhileEnd p xs)
+
+breakEnd :: (a -> Bool) -> [a] -> ([a], [a])
+breakEnd p = spanEnd (not . p)
spanUntil :: forall a . (a -> Bool) -> [a] -> ([a], [a])
spanUntil p =