Functional programming combines the flexibility and power of abstract mathematics with the intuitive clarity of abstract mathematics.