In a functional program an expression is evaluated with the purpose of producing a value
An expression is composed of subexpressions