square :: Int -> Int square x = x * x add :: Int -> Int -> Int add x y = x + y factorial :: Int -> Int cannot conjure factorial :: Int -> Int factorial x = foldr (*) 1 (enumFromTo 1 x) second :: [Int] -> Int second xs = head (tail xs) (++) :: [Int] -> [Int] -> [Int] xs ++ ys = foldr (:) ys xs reverse :: [Int] -> [Int] cannot conjure reverse :: [Int] -> [Int] reverse xs = foldr (foldr (:) . unit) [] xs