module List ( map, zipWith, zipWith3, foldr, foldl, length, sum, add, scanl, scanr, reverse, replicate, repeat, cycle, iterate, (++), concat, concatMap, head, tail, null, (!!), take, drop, filter, takeWhile, inits, tails, ) where import List.Basic import ListLive import Function import Prelude ( (-), (+), Num, Int, Bool(False,True), error ) map :: (a -> b) -> [a] -> [b] ; map :: forall a b. (a -> b) -> [a] -> [b] map a -> b _ [] = [] ; map a -> b f (a x : [a] xs) = a -> b f a x b -> [b] -> [b] forall a. a -> [a] -> [a] : (a -> b) -> [a] -> [b] forall a b. (a -> b) -> [a] -> [b] map a -> b f [a] xs ; zipWith :: (a -> b -> c) -> [a] -> [b] -> [c] ; zipWith :: forall a b c. (a -> b -> c) -> [a] -> [b] -> [c] zipWith a -> b -> c f (a x : [a] xs) (b y : [b] ys) = a -> b -> c f a x b y c -> [c] -> [c] forall a. a -> [a] -> [a] : (a -> b -> c) -> [a] -> [b] -> [c] forall a b c. (a -> b -> c) -> [a] -> [b] -> [c] zipWith a -> b -> c f [a] xs [b] ys ; zipWith a -> b -> c _f [a] _xs [b] _ys = [] ; zipWith3 :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d] ; zipWith3 :: forall a b c d. (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d] zipWith3 a -> b -> c -> d f (a x : [a] xs) (b y : [b] ys) (c z : [c] zs) = a -> b -> c -> d f a x b y c z d -> [d] -> [d] forall a. a -> [a] -> [a] : (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d] forall a b c d. (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d] zipWith3 a -> b -> c -> d f [a] xs [b] ys [c] zs ; zipWith3 a -> b -> c -> d _f [a] _xs [b] _ys [c] _zs = [] ; foldr :: (b -> a -> a) -> a -> [b] -> a ; foldr :: forall b a. (b -> a -> a) -> a -> [b] -> a foldr b -> a -> a _ a a [] = a a ; foldr b -> a -> a f a a (b x : [b] xs) = b -> a -> a f b x ( (b -> a -> a) -> a -> [b] -> a forall b a. (b -> a -> a) -> a -> [b] -> a foldr b -> a -> a f a a [b] xs ) ; foldl :: (b -> a -> b) -> b -> [a] -> b ; foldl :: forall b a. (b -> a -> b) -> b -> [a] -> b foldl b -> a -> b _ b a [] = b a ; foldl b -> a -> b f b a (a x : [a] xs) = (b -> a -> b) -> b -> [a] -> b forall b a. (b -> a -> b) -> b -> [a] -> b foldl b -> a -> b f (b -> a -> b f b a a x) [a] xs ; length :: [a] -> Int ; length :: forall a. [a] -> Int length = [Int] -> Int forall a. Integral a => [a] -> a sumInteger ([Int] -> Int) -> ([a] -> [Int]) -> [a] -> Int forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -> Int) -> [a] -> [Int] forall a b. (a -> b) -> [a] -> [b] map (Int -> a -> Int forall a b. a -> b -> a const Int 1) ; sum :: (Num a) => [a] -> a ; sum :: forall a. Num a => [a] -> a sum = (a -> a -> a) -> a -> [a] -> a forall b a. (b -> a -> b) -> b -> [a] -> b foldl a -> a -> a forall a. Num a => a -> a -> a add a 0 ; add :: (Num a) => a -> a -> a ; add :: forall a. Num a => a -> a -> a add a x a y = a x a -> a -> a forall a. Num a => a -> a -> a + a y ; scanl :: (a -> b -> a) -> a -> [b] -> [a] ; scanl :: forall a b. (a -> b -> a) -> a -> [b] -> [a] scanl a -> b -> a _ a a [] = [a a] ; scanl a -> b -> a f a a (b x : [b] xs) = a a a -> [a] -> [a] forall a. a -> [a] -> [a] : (a -> b -> a) -> a -> [b] -> [a] forall a b. (a -> b -> a) -> a -> [b] -> [a] scanl a -> b -> a f (a -> b -> a f a a b x) [b] xs ; scanr :: (b -> a -> a) -> a -> [b] -> [a] ; scanr :: forall b a. (b -> a -> a) -> a -> [b] -> [a] scanr b -> a -> a _ a a [] = [a a] ; scanr b -> a -> a f a a (b x : [b] xs) = (b -> a -> a) -> b -> [a] -> [a] forall b a. (b -> a -> a) -> b -> [a] -> [a] scanrAux b -> a -> a f b x ((b -> a -> a) -> a -> [b] -> [a] forall b a. (b -> a -> a) -> a -> [b] -> [a] scanr b -> a -> a f a a [b] xs) ; scanrAux :: (b -> a -> a) -> b -> [a] -> [a] ; scanrAux :: forall b a. (b -> a -> a) -> b -> [a] -> [a] scanrAux b -> a -> a f b x [a] ys = b -> a -> a f b x ([a] -> a forall a. [a] -> a head [a] ys) a -> [a] -> [a] forall a. a -> [a] -> [a] : [a] ys ; reverse :: [a] -> [a] ; reverse :: forall a. [a] -> [a] reverse = ([a] -> a -> [a]) -> [a] -> [a] -> [a] forall b a. (b -> a -> b) -> b -> [a] -> b foldl ((a -> [a] -> [a]) -> [a] -> a -> [a] forall b a c. (b -> a -> c) -> a -> b -> c flip a -> [a] -> [a] forall a. a -> [a] -> [a] cons) [] ; replicate :: Int -> a -> [a] ; replicate :: forall a. Int -> a -> [a] replicate Int n a x = Int -> [a] -> [a] forall a. Int -> [a] -> [a] take Int n ( a -> [a] forall a. a -> [a] repeat a x ) ; repeat :: a -> [a] ; repeat :: forall a. a -> [a] repeat a s = a s a -> [a] -> [a] forall a. a -> [a] -> [a] : a -> [a] forall a. a -> [a] repeat a s ; cycle :: [a] -> [a] ; cycle :: forall a. [a] -> [a] cycle [a] s = [a] s [a] -> [a] -> [a] forall a. [a] -> [a] -> [a] ++ [a] -> [a] forall a. [a] -> [a] cycle [a] s ; iterate :: (a -> a) -> a -> [a] ; iterate :: forall a. (a -> a) -> a -> [a] iterate a -> a f a x = a x a -> [a] -> [a] forall a. a -> [a] -> [a] : (a -> a) -> a -> [a] forall a. (a -> a) -> a -> [a] iterate a -> a f (a -> a f a x) ; concatMap :: (a -> [b]) -> [a] -> [b] ; concatMap :: forall a b. (a -> [b]) -> [a] -> [b] concatMap a -> [b] f = [[b]] -> [b] forall a. [[a]] -> [a] concat ([[b]] -> [b]) -> ([a] -> [[b]]) -> [a] -> [b] forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -> [b]) -> [a] -> [[b]] forall a b. (a -> b) -> [a] -> [b] map a -> [b] f ; head :: [a] -> a ; head :: forall a. [a] -> a head (a x:[a] _) = a x ; head [] = [Char] -> a forall a. HasCallStack => [Char] -> a error [Char] "head: empty list" ; tail :: [a] -> [a] ; tail :: forall a. [a] -> [a] tail (a _:[a] xs) = [a] xs ; tail [] = [Char] -> [a] forall a. HasCallStack => [Char] -> a error [Char] "tail: empty list" ; null :: [a] -> Bool ; null :: forall a. [a] -> Bool null [] = Bool True ; null [a] _ = Bool False ; (!!) :: [a] -> Int -> a ; (a x:[a] _) !! :: forall a. [a] -> Int -> a !! Int 0 = a x ; (a _:[a] xs) !! Int n = [a] xs [a] -> Int -> a forall a. [a] -> Int -> a !! (Int nInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1) ; [] !! Int _ = [Char] -> a forall a. HasCallStack => [Char] -> a error [Char] "!!: index too large" ; drop :: Int -> [b] -> [b] ; drop :: forall a. Int -> [a] -> [a] drop Int 0 [b] xs = [b] xs ; drop Int _ [] = [] ; drop Int n (b _ : [b] xs) = Int -> [b] -> [b] forall a. Int -> [a] -> [a] drop (Int nInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1) [b] xs ; inits :: [a] -> [[a]] ; inits :: forall a. [a] -> [[a]] inits [a] xs = [] [a] -> [[a]] -> [[a]] forall a. a -> [a] -> [a] : [a] -> [[a]] forall a. [a] -> [[a]] initsAux [a] xs ; initsAux :: [a] -> [[a]] ; initsAux :: forall a. [a] -> [[a]] initsAux [] = [] ; initsAux (a x:[a] xs) = ([a] -> [a]) -> [[a]] -> [[a]] forall a b. (a -> b) -> [a] -> [b] map (a -> [a] -> [a] forall a. a -> [a] -> [a] cons a x) ([a] -> [[a]] forall a. [a] -> [[a]] inits [a] xs) ; tails :: [a] -> [[a]] ; tails :: forall a. [a] -> [[a]] tails [a] xs = [a] xs [a] -> [[a]] -> [[a]] forall a. a -> [a] -> [a] : [a] -> [[a]] forall a. [a] -> [[a]] tailsAux [a] xs ; tailsAux :: [a] -> [[a]] ; tailsAux :: forall a. [a] -> [[a]] tailsAux [] = [] ; tailsAux (a _:[a] xs) = [a] -> [[a]] forall a. [a] -> [[a]] tails [a] xs ;