pure functional programming does not allow side effects (state modification) except in very isolated and controlled setttings. Permits very advanced optimizations, stemming from the property of equational reasoning. Symbols have demantic definitions with&clear compositionality, which makes the task of writing and debugging much easier.
Some langauges which support FP are: Haskell, ML, Scheme, Miranda, Clean, APL/J