A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Introdução ao -calculus

Apresentações semelhantes


Apresentação em tema: "Introdução ao -calculus"— Transcrição da apresentação:

1 Introdução ao -calculus
Prof. Gustavo Motta Departamento de Informática/UFPB 03 (c) 2007 Gustavo Motta

2 Sumário Expressões- sem variáveis livres
Combinadores aritméticos, constantes & Cia. 03 (c) 2007 Gustavo Motta

3 Expressões- sem variáveis livres
Expressões- com variáveis livres são dependentes do contexto Sentido (ou valor) depende de suas variáveis livres Usar uma expressão- num certo contexto significa usá-la como subexpressão em outra expressão x.(y)x usada no contexto ((x.y.hole)E)F resulta em ((x.y.x.(y)x)E)F  x.(F)x Note que a ocorrência livre de y foi capturada pelo contexto onde a subexpressão foi empregada Um contexto é uma expressão- com um ou mais holes (lacunas) 03 (c) 2007 Gustavo Motta

4 Expressões- sem variáveis livres
Note a diferença entre usar uma expressão- E num contexto C e a substituição de hole por E, com hole sendo variável livre em C ((hole.C)E  [E / hole]C Nesse caso, as varáveis livres não são capturadas Variáveis livres  variáveis globais Variáveis livres numa expressão- correspondem a variáveis globais usadas num bloco aninhado ou no corpo de um procedimento numa linguagem de programação convencional Variáveis amarradas correspondem a parâmetros formais ou a variáveis locais 03 (c) 2007 Gustavo Motta

5 Expressões- sem variáveis livres
Expressões- sem variáveis livres são independentes do contexto Comportam-se da mesma forma em qualquer contexto Similares a símbolos constantes A expressão- x.x representa a transformação de identidade em qualquer contexto Combinadores Definição - Expressões- sem variáveis livres são chamadas de expressões- fechadas ou de combinadores 03 (c) 2007 Gustavo Motta

6 Expressões- sem variáveis livres
Usados para “combinar” funções na formação de novas funções Exemplos Combinador identidade - I I é considerado um símbolo constante (ou palavra reservada) e não uma variável Representa uma classe de expressões- -congruentes Definido como I  x.x 03 (c) 2007 Gustavo Motta

7 Expressões- sem variáveis livres
Exemplos Combinador composição - compose Define a composição de duas funções f e g compose  f.g.x.(f)(g)x Tratamento de símbolos para combinadores (1) Abreviação para expressões- (2) Considerá-los atômicos e introduzir regras de redução específicas (I)E  E (((compose)F)G)E  (F)(G)E 03 (c) 2007 Gustavo Motta

8 Expressões- sem variáveis livres
Exemplos Combinadores booleanos true  x.y.x false  x.y.y Regras de redução ((true)P)Q  P ((false)P)Q  Q Seleciona uma de duas alternativas 03 (c) 2007 Gustavo Motta

9 Expressões- sem variáveis livres
Combinadores booleanos A expressão condicional If C then P else Q toma a forma ((C)P)Q na notação , com P e Q denotando expressões- arbitrárias e C sendo redutível a x.y.x ou a x.y.y Representada pelo combinador c.p.q.((c)p)q Lembrem-se que o lambda-calculus é livre de tipos 03 (c) 2007 Gustavo Motta

10 Combinadores aritméticos, constantes & Cia.
Observações Valores verdade e operadores booleanos padrão podem ser representados por combinadores específicos Comportam-se da mesma maneira em diferentes contextos Em princípio, não há diferença entre um valor constante como true ou false e uma função bem definida como and De fato, toda função bem definida pode ser considerada uma entidade constante Mesmo os valores verdade são representados por funções Quase tudo pode ser representado dessa maneira 03 (c) 2007 Gustavo Motta

11 Combinadores aritméticos, constantes & Cia.
Representação dos números naturais Numerais de Church 0  f.x.x 1  f.x.(f)x 2  f.x.(f)(f)x 3  f.x.(f)(f)(f)x Em geral, o combinador representando o n-ésimo número realiza n iterações do primeiro argumento sobre o segundo 03 (c) 2007 Gustavo Motta

12 Combinadores aritméticos, constantes & Cia.
Representação dos números naturais Operadores aritméticos succ  n.f.x.(f)((n)f)x (n.f.x.(f)((n)f)x)f.x.(f)x f.x.(f)((f.x.(f)x)f)x f.x.(f)(x.(f)x)x f.x.(f)(f)x  2 Notem que o nome das variáveis bounded não é importante 03 (c) 2007 Gustavo Motta

13 Combinadores aritméticos, constantes & Cia.
Representação dos números naturais Operadores aritméticos +  m.n.f.x.((m)f)((n)f)x ((m.n.f.x.((m)f)((n)f)x)f.x.(f)(f)x)f.x.(f)(f)(f)x (n.f.x.((f.x.(f)(f)x)f)((n)f)x)f.x.(f)(f)(f)x f.x.((f.x.(f)(f)x)f)((f.x.(f)(f)(f)x)f)x f.x.(x.(f)(f)x)(x.(f)(f)(f)x)x f.x.(x.(f)(f)x)(f)(f)(f)x f.x.(f)(f)(f)(f)(f)x  5 03 (c) 2007 Gustavo Motta

14 Combinadores aritméticos, constantes & Cia.
Representação dos números naturais Operadores aritméticos *  m.n.f.(m)(n)f Teste de zero zero  n.((n)(true)false)true (n.((n)(true)false)true)f.x.(f)x ((f.x.(f)x)(true)false)true (x.((true)false)x)true ((true)false)true  false 03 (c) 2007 Gustavo Motta

15 Combinadores aritméticos, constantes & Cia.
Representação dos números naturais Operadores aritméticos A representação da operação predecessor, que resulta em n – 1 para n > 0 e 0 para n = 0 é engenhosa Representar pares do tipo [n, n – 1] na notação-, onde um par qualquer [a, b] é dado por z.((z)a)b tendo as seguintes propriedades (z.((z)a)b)true  a (z.((z)a)b)false  b 03 (c) 2007 Gustavo Motta

16 Combinadores aritméticos, constantes & Cia.
Representação dos números naturais Operadores aritméticos Define-se então a função next, para obter [n + 1, n] a partir de [n, n – 1], que corresponde à seguinte expressão- next  p.z.((z)(succ)(p)true)(p)true Aplicando esse operador a partir do par z.((z)0)0, temos ((n)p.z.((z)(succ)(p)true)(p)true)z.((z)0)0 Agora, para se ter a função predecessor, basta selecionar o segundo elemento do par ordenado resultante pred  n.(((n)p.z.((z)(succ)(p)true)(p)true)z.((z)0)0)false 03 (c) 2007 Gustavo Motta

17 Bibliografia Revesz, G. E. Lambda-Calculus, Combinators, and Functional Programming. Cambridge University Press, 1988. 03 (c) 2007 Gustavo Motta


Carregar ppt "Introdução ao -calculus"

Apresentações semelhantes


Anúncios Google