Este documento explica la historia y conceptos básicos de la programación funcional. Comienza describiendo el problema de decisión planteado por David Hilbert y cómo Alonzo Church y Alan Turing demostraron independientemente que era irresoluble, estableciendo las bases teóricas de la computabilidad. Luego introduce el cálculo lambda y lenguajes funcionales como Lisp, ML y Haskell. Finalmente, discute cómo la programación funcional puede utilizarse para evitar errores relacionados a efectos secundarios y condiciones de carrera.