== Signature == [] :: [Int] (:) :: Int -> [Int] -> [Int] (++) :: [Int] -> [Int] -> [Int] head :: [Int] -> Int tail :: [Int] -> [Int] == Laws == 1. xs ++ [] = xs 2. [] ++ xs = xs 3. head (x : xs) = x 4. tail (x : xs) = xs 5. (xs ++ ys) ++ zs = xs ++ (ys ++ zs) 6. x : (xs ++ ys) = (x : xs) ++ ys