FP (linguagem de programação)

Origem: Wikipédia, a enciclopédia livre.
FP
Surgido em 1977
Criado por John Backus
Influenciada por APL
Influenciou FL, J


FP (de Function Programming) é uma linguagem de programação criada por John Backus para suportar o paradigma da programação em nível funcional.[1] Isso permite a eliminação de variáveis nomeadas.

Panorama[editar | editar código-fonte]

Os valores que os programas em FP mapeiam em outros compreendem um conjunto fechado em formação seqüencial:

Se x1,...,xn são valores, então a sequênciax1,...,xn〉 também é um valor

Esses valores podem ser construídos a partir de qualquer conjunto de átomos: booleanos, inteiros, reais, caracteres, etc:

boolean   : {T, F}
integer   : {0,1,2,...,∞}
character : {'a','b','c',...}
symbol    : {x,y,...}

é o valor indefinido, ou base. Seqüências são preservadoras da base:

x1,...,,...,xn〉  =  

Programas em FP são funções f, sendo que cada uma mapeia um valor único x em outro:

f:x representa o valor que resulta da aplicação da função f 
    ao valor x

Funções podem ser primitivas (isto é, embutidas no ambiente de FP) ou construídas a partir de primitivas por operações de formação de programas (também chamadas Funcionais).

Um exemplo de função primitiva é constant, que transforma um valor x em uma função de valor constante . Funções são estritas:[2]

f: = 

Outro exemplo de uma função primitiva é o seletor de família de funções, denotado por 1,2,... onde:

1:〈x1,...,xn〉  =  x1
i:〈x1,...,xn〉  =  xi  se  0 < i ≤ n
              =  ⊥   em caso contrário

Funcionais[editar | editar código-fonte]

Em contraste com funções primitivas, funcionais operam em outras funções. Por exemplo, algumas funções têm um valor de unidade (elemento neutro), tal como 0 para adição e 1 para a multiplicação. A unidade funcional produz tal valor quando aplicada a uma função f que tem um:

unit +   =  0
unit ×   =  1
unit foo =  ⊥

Estes são os núcleos funcionais de FP:

composição  f°g        onde    f°g:x = f:(g:x)
construção [f1,...fn] onde   [f1,...fn]:x =  〈f1:x,...,fn:x
condição (hf;g)    onde   (hf;g):x   =  f:x   if   h:x  =  T
                                             =  g:x   se   h:x  =  F
                                             =      caso contrário
aplicação a todos  αf       onde   αf:〈x1,...,xn〉  = 〈f:x1,...,f:xn
inserção à direita  /f       onde   /f:〈x〉             =  x
                       e     /f:〈x1,x2,...,xn〉  =  f:〈x1,/f:〈x2,...,xn〉〉
                       e     /f:〈 〉             =  unit f
inserção à esquerda  \f       onde   \f:〈x〉             =  x
                      e     \f:〈x1,x2,...,xn〉  =  f:〈\f:〈x1,...,xn-1〉,xn〉
                      e     \f:〈 〉             =  unit f

Funções Equacionais[editar | editar código-fonte]

Além de ser construída a partir de funcionais primitivas, uma função pode ser definida recursivamente por uma equação, o tipo mais simples sendo:

fEf

onde E'f é uma expressão construída partir de primitivas, outras funções já definidas, e o próprio símbolo de função f, usando funcionais.

Veja Também[editar | editar código-fonte]

Ligações Externas[editar | editar código-fonte]