module List.Basic where
import Bool
import Prelude ( (-), Int, Bool )
infixr 5 ++
(++) :: [a] -> [a] -> [a] ;
(a
x:[a]
xs) ++ :: forall a. [a] -> [a] -> [a]
++ [a]
ys = a
x a -> [a] -> [a]
forall a. a -> [a] -> [a]
: ([a]
xs [a] -> [a] -> [a]
forall a. [a] -> [a] -> [a]
++ [a]
ys) ;
[] ++ [a]
ys = [a]
ys ;
concat :: [[a]] -> [a] ;
concat :: forall a. [[a]] -> [a]
concat ([a]
x:[[a]]
xs) = [a]
x [a] -> [a] -> [a]
forall a. [a] -> [a] -> [a]
++ [[a]] -> [a]
forall a. [[a]] -> [a]
concat [[a]]
xs ;
concat [] = [] ;
take :: Int -> [a] -> [a] ;
take :: forall a. Int -> [a] -> [a]
take Int
0 [a]
_xs = [] ;
take Int
n (a
x:[a]
xs) = a
x a -> [a] -> [a]
forall a. a -> [a] -> [a]
: Int -> [a] -> [a]
forall a. Int -> [a] -> [a]
take (Int
nInt -> Int -> Int
forall a. Num a => a -> a -> a
-Int
1) [a]
xs ;
take Int
_ [] = [] ;
filter :: (a -> Bool) -> [a] -> [a] ;
filter :: forall a. (a -> Bool) -> [a] -> [a]
filter a -> Bool
p (a
x:[a]
xs) = Bool -> [a] -> [a] -> [a]
forall a. Bool -> a -> a -> a
ifThenElse (a -> Bool
p a
x) (a
x a -> [a] -> [a]
forall a. a -> [a] -> [a]
: (a -> Bool) -> [a] -> [a]
forall a. (a -> Bool) -> [a] -> [a]
filter a -> Bool
p [a]
xs) ((a -> Bool) -> [a] -> [a]
forall a. (a -> Bool) -> [a] -> [a]
filter a -> Bool
p [a]
xs) ;
filter a -> Bool
_ [] = [] ;
takeWhile :: (a -> Bool) -> [a] -> [a] ;
takeWhile :: forall a. (a -> Bool) -> [a] -> [a]
takeWhile a -> Bool
p (a
x:[a]
xs) = Bool -> [a] -> [a] -> [a]
forall a. Bool -> a -> a -> a
ifThenElse (a -> Bool
p a
x) (a
x a -> [a] -> [a]
forall a. a -> [a] -> [a]
: (a -> Bool) -> [a] -> [a]
forall a. (a -> Bool) -> [a] -> [a]
takeWhile a -> Bool
p [a]
xs) [] ;
takeWhile a -> Bool
_ [] = [] ;