Programación a nivel funcional
A programación a nivel funcional é uns dos dous paradigmas contrastantes identificados por John Backus no seu traballo sobre os programas como obxectos matemáticos; o outro é a programación a nivel de valores.
No seu discurso de aceptación do Premio Turing en 1977, Backus describiu o que considera como a necesidade dun cambio a unha filosofía diferente en deseño de linguaxes de programación:
- "Parecese existir un problema no deseño das linguaxes de programación. Cada nova linguaxe incorpora, logo de algo de limpeza, todas as características das linguaxes anteriores mais algunhas outras. [...] Cada nova linguaxe presenta novas características de moda... pero o feito é que poucas linguaxes fan que a tarefa de programar sexa máis económica, ou máis segura como para xustificar o custo de producila e aprender a utilizala."
A linguaxe de programación FP foi a primeira linguaxe deseñada especificamente para dar soporte ao estilo de programación a nivel funcional.
Un programa de nivel funcional non necesita a noción de variable, dado que as variables, que son elemento esencial nas definicións a nivel de valores non fan falta no nivel funcional.
No estilo de programación de nivel funcional os programas escríbense como combinación doutros programas coa axuda dos operacións de construción de programas ou funcionais.
Baixo este enfoque os programas, cos funcionais como #operador\\\, forman un espazo matemático.
Outra vantaxe potencial deste enfoque é a posibilidade de restrinxirse unicamente ás funcións estritas e asociarlles un mecanismo de avaliación por valor, que é o máis sinxelo de implementar. Outra vantaxe é a existencia de definicións de nivel funcional que non son simplemente o correspondente dunha definición de nivel de valores. Estas definicións, ás veces un pouco crípticas polo concisas, representan un estilo de programación moi poderoso.
Aínda que a proposta de Backus data dos anos 70, foi pouco adoptada pola comunidade de programación funcional, que preferiu basear os seus traballos no cálculo Lambda.
A programación a nivel funcional no estilo de FP ten unha forte relación coa lóxica combinatoria de Haskell Curry, coas linguaxes de combinadores, antecesores de Miranda e Haskell, así como coas categorías cartesianas pechadas, teoría que deu orixe á linguaxe CAML (Categorical Abstract Machine Languaje) antecesora da linguaxe Ocaml.