ref: 4a66506534d7e77d437b287815442536acde9181
parent: 6def841c7224b8d2a8a70246e6ffd80f905cae5c
author: Lennart Augustsson <lennart@augustsson.net>
date: Sat Mar 30 17:26:22 EDT 2024
More functions
--- a/lib/Data/List.hs
+++ b/lib/Data/List.hs
@@ -228,6 +228,12 @@
isSuffixOfBy :: forall a . (a -> a -> Bool) -> [a] -> [a] -> Bool
isSuffixOfBy eq n h = isPrefixOfBy eq (reverse n) (reverse h)
+isInfixOf :: forall a . Eq a => [a] -> [a] -> Bool
+isInfixOf = isInfixOfBy (==)
+
+isInfixOfBy :: forall a . (a -> a -> Bool) -> [a] -> [a] -> Bool
+isInfixOfBy eq cs ds = any (isPrefixOfBy eq cs) (inits ds)
+
splitAt :: forall a . Int -> [a] -> ([a], [a])
splitAt n xs = (take n xs, drop n xs)
@@ -281,6 +287,13 @@
tail :: forall a . [a] -> [a]
tail [] = error "tail"
tail (_:ys) = ys
+
+tails :: forall a . [a] -> [[a]]
+tails [] = [[]]
+tails xxs@(_:xs) = xxs : tails xs
+
+inits :: forall a . [a] -> [[a]]
+inits = map reverse . reverse . tails . reverse
intersperse :: forall a . a -> [a] -> [a]
intersperse _ [] = []
--
⑨