Você está na página 1de 8

PROGRAMAO FUNCIONAL

Leonardo Tavares
Maia
Leandro da Costa

A programao funcional baseia-se no conceito


matemtico de funo, em que para cada elemento do
seu conjunto domnio (entrada) h apenas um elemento
no seu conjunto contradomnio (sada). Alm disso, as
funes so normalmente expressas por meio de outras
funes - de modo que obter o valor da funo para um
determinado conjunto de parmetros envolve no s
aplicar as regras daquela funo, mas tambm fazer
uso de outras funes.

Em cincia da computao, programao funcional


um paradigma de programao que trata a computao
como uma avaliao de funes matemticas e que
evita estados ou dados mutveis.
Uma funo, neste sentido, pode ter ou no ter
parmetros e um simples valor de retorno. Os
parmetros so os valores de entrada da funo, e o
valor de retorno o resultado da funo. A definio de
uma funo descreve como a funo ser avaliada em
termos de outras funes.

DESENVOLVIMENTO
As funes so tratadas como valores de primeira
importncia, o que o mesmo que dizer que funes
podem ser parmetros ou valores de entrada para
outras funes e podem ser os valores de retorno ou
sada de uma funo. Ento podemos entender
paradigma funcional como um mapeamento dos valores
de entrada nos valores de retorno, atravs de funes.

Funes podem ser nomeadas, como em outras linguagens, ou


definidas anonimamente (algumas vezes durante a execuo do
programa) usando uma abstrao lambda e usadas como
valores em outras funes. Linguagens funcionais tambm
permitem que funes sejam do tipo curry. Currying uma
tcnica para reescrita de funes com mltiplos parmetros
como a composio de funes de um parmetro.
O resultado uma funo onde os parmetros neste
subconjunto so agora fixados como constantes, e os valores do
resto dos parmetros ainda no so especificados. Esta nova
funo pode ser aplicada aos parmetros restantes para obter o
valor da funo final.

Por exemplo, uma funo adiciona(x,y) = x + y pode ser


do tipo curry de forma que o valor de retorno
adiciona(2) note que no h um parmetro y ser
uma funo annima, o que equivalente funo
adiciona2(y) = 2 + y. Esta nova funo tem apenas um
parmetro e corresponde a adicionar 2 a um nmero.
Novamente, isso apenas possvel porque as funes
so tratadas como valores de primeira importncia.

O clculo lambda pode ser considerado a primeira


linguagem de programao funcional, embora nunca
tenha sido projetada para ser realmente executada em
um computador. um modelo de computao
projetado por Alonzo Church nos anos 1930 que oferece
um modo muito formal de descrever um clculo de uma
funo. A primeira linguagem de programao funcional
criada para computadores foi LISP, desenvolvida por
John McCarthy no Instituto de Tecnologia de
Massachusetts (MIT) no fim dos anos 1950.

Mesmo no sendo uma linguagem de programao


puramente funcional, LISP introduziu a maioria das
caractersticas hoje encontradas nas modernas
linguagens de programao funcional.