sum' :: [Int] -> Int
sum' [] = 0
sum' (x:xs) = x + sum' xs

last' :: [Int] -> Int
last' [] = undefined
last' [x] = x
last' (x:xs) = last' xs

and' :: [Bool] -> Bool
and' [] = True
and' (x:xs) = x && and' xs

-- repeat' :: 
repeat' a = [a, a..]

--replicate' x [y] =
--  if x > 0
--  then []
--  else undefined

insert' y [] = [y]
insert' y (x:xs) =
  if y < x
  then y : x : xs
  else x : insert' y xs