shithub: MicroHs

Download patch

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 _ [] = []
--