Due to referential transparency, functional programming is particularly appropriate for equational reasoning. ... The first is a set of recursion patterns that allow us to define recursive functions implicitly. These are encoded as higher-order operators that encapsulate typical forms of recursion, such as the well-known foldr operator on lists. The second is a point-free style of programming in which programs are expressed as combinations of simpler functions, without ever mentioning their arguments. ...
Thesis by Manuel Alcino Pereira da Cunha. Should read this in detail once.