La programación funcional se basa en el cálculo lambda y enfatiza el uso de funciones puras sin efectos secundarios. Los lenguajes funcionales como Lisp, Scheme y otros derivan del cálculo lambda y tratan a las funciones como datos de primer orden. La característica clave es evitar el cambio de estado mediante el uso de funciones matemáticas puras.