Introdu - PowerPoint PPT Presentation

1 / 17
About This Presentation
Title:

Introdu

Description:

Introdu o ao -calculus Prof. Gustavo Motta Departamento de Inform tica/UFPB – PowerPoint PPT presentation

Number of Views:39
Avg rating:3.0/5.0
Slides: 18
Provided by: Gustav164
Category:
Tags: introdu | lambda

less

Transcript and Presenter's Notes

Title: Introdu


1
Introdução ao ?-calculus
  • Prof. Gustavo MottaDepartamento de
    Informática/UFPB

2
Sumário
  • Expressões-? sem variáveis livres
  • Combinadores aritméticos, constantes Cia.

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
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 / holeC
  • 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
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
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
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
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
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
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
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
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
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
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
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 gt 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
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
Bibliografia
  • Revesz, G. E. Lambda-Calculus, Combinators, and
    Functional Programming. Cambridge University
    Press, 1988.
Write a Comment
User Comments (0)
About PowerShow.com