import Prelude hiding (length) -- The length of a list: length :: [a] -> Int -- a is a type variable/parameter length [] = 0 length (_:xs) = 1 + length xs -- Concrete types: --length :: [Int] -> Int because a |-> Int --length :: [Bool] -> Int because a |-> Bool --length :: [Char] -> Int because a |-> Char ll = length [2,3,4] + length "abc" --mf = foldr 0 (+) [1,2,3] mf = foldr (+) 0 [1,2,3] -- Most general types might indicate programming errors: revf [] = [] revf (x:xs) = revf xs ++ x f :: (a -> a) -> (a -> a) f g = g g