FP (linguagem de programação)

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
FP
Surgido em 1977
Criado por John Backus
Influenciada por APL
Influenciou FL, J


FL (de Function Programming) é uma linguagem de programação criada por John Backus para suportar o paradigma funcional. Isso permite a eliminação de variáveis nomeadas.

Panorama[editar | editar código-fonte]

Os valores que os programas de FP mapeiam em um outro compreendem um conjunto que é fechado em formação seqüência:

if x1,...,xn are values, then the sequencex1,...,xn〉 is also a value

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 fundo. Seqüências são preservadoras do fundo:

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 são tanto primitivas (isto é, embutidas no ambiente de FP) ou são construídas a partir de primitivas por operações de formação de programas (também chamadas Funcionais).

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

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  if  0 < i ≤ n
              =  ⊥   otherwise

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, 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   if   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
                       and     /f:〈x1,x2,...,xn〉  =  f:〈x1,/f:〈x2,...,xn〉〉
                       and     /f:〈 〉             =  unit f
inserção á  esquerda  \f       onde   \f:〈x〉             =  x
                      and     \f:〈x1,x2,...,xn〉  =  f:〈\f:〈x1,...,xn-1〉,xn〉
                      and     \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]