Polymorphic and Overloaded Types
head :: [a] -> a
-- a list of type a's returns a type a, whatever type a is for that list
tail :: [a] -> [a]
-- a list of type a's returns a type [a], whatever type a is for that listLast updated
head :: [a] -> a
-- a list of type a's returns a type a, whatever type a is for that list
tail :: [a] -> [a]
-- a list of type a's returns a type [a], whatever type a is for that listLast updated