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

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

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

Apresentações semelhantes


Apresentação em tema: "03(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB."— Transcrição da apresentação:

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

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

3 -calculus 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)

4 -calculus 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

5 -calculus 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

6 -calculus 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

7 -calculus 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

8 -calculus 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

9 -calculus 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

10 -calculus 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

11 -calculus 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

12 -calculus 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

13 -calculus 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

14 -calculus 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

15 -calculus 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

16 -calculus 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

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


Carregar ppt "03(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB."

Apresentações semelhantes


Anúncios Google