import Data.Char -- some examples of recursive functions over lists -- "length" size :: [a] -> Int size [] = 0 size (x:xs) = 1 + size xs -- "maximum" mest :: Ord a => [a] -> a mest [x] = x mest (x:xs) = max x (mest xs) -- "++" (+++) :: [a] -> [a] -> [a] [] +++ ys = ys (x:xs) +++ ys = x : (xs +++ ys) -- "reverse" rev :: [a] -> [a] rev [] = [] rev (x:xs) = rev xs +++ [x] -- value value :: String -> Integer value s = calculate (reverse s) calculate :: String -> Integer calculate "" = 0 calculate (c:s) = toInteger (digitToInt c) + 10 * calculate s