The document discusses representing and evaluating recursive expressions using functional programming techniques. It defines an Exp algebraic data type to represent expressions like integers, doubles, sums, products, divisions and squares. It then implements functions to evaluate and optimize expressions represented as Exp values. An example expression is given involving multiplication, summation and division.