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

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

Cálculo Lâmbda (l – Calculus)

Apresentações semelhantes


Apresentação em tema: "Cálculo Lâmbda (l – Calculus)"— Transcrição da apresentação:

1 Cálculo Lâmbda (l – Calculus)
João Bosco da Mota Alves Programação Funcional INE/CTC/UFSC Junho/2001

2 João Bosco da Mota Alves
Notação Lâmbda Às vezes, precisa-se definir pequenas funções, sem dar-lhes nomes Exemplo Calcular x2+3x+1, para x Î [1..100] Claro, é possível usar-se Ys = map f [ ] where f x = x*x + 3 * x + 1 INE/CTC/UFSC João Bosco da Mota Alves

3 João Bosco da Mota Alves
Notação Lâmbda Há uma notação (l-notation) que cria função sem dar-lhe nome, \padrão -> expressão Conhecida como Notação Lâmbda O símbolo \ é o mais parecido com l Então \x -> x*x + 3*x + 1 INE/CTC/UFSC João Bosco da Mota Alves

4 João Bosco da Mota Alves
Notação Lâmbda Lê-se, \x -> x*x + 3*x + 1, como “a função que, dado o argumento x, calcula o valor x*x + 3*x + 1” Muito usada para a passagem de função como parâmetro; exemplo ys = map (\x -> x*x + 3*x + 1) [1 .. x] INE/CTC/UFSC João Bosco da Mota Alves

5 João Bosco da Mota Alves
Notação Lâmbda Em XLISPWIN > #' (lambda (x) (+ x 3)) #<Closure: #484facad> > (funcall * 5) 8 > (mapcar #' (lambda (x) (+ x 2)) '( )) ( ) INE/CTC/UFSC João Bosco da Mota Alves

6 l – Calculus consiste de
Uma linguagem, a notação – l Que nos dá expressões lâmbda E regras Para simplificar e manipular essas expressões lâmbda Precisamos, então, aprender tanto a linguagem quanto as regras INE/CTC/UFSC João Bosco da Mota Alves

7 João Bosco da Mota Alves
l – Calculus Suponha que f : R -> R seja definida por f(x) = (x + 1)2 Uma função de uma variável, f(x) f(a), para um a específico, é obtido substituindo-se, por a, todas as ocorrências de x Também, f(x) a, aplicação de f(x) a a INE/CTC/UFSC João Bosco da Mota Alves

8 João Bosco da Mota Alves
l – Calculus Então f(x) 3 = (3 + 1)2 = 16 INE/CTC/UFSC João Bosco da Mota Alves

9 João Bosco da Mota Alves
l – Calculus Suponha, agora, f : R´R -> R, definida por f(x,y) = x + y + (2*x*y) Aqui, f é um par de nos reais, (x,y) Dizemos que f é uma função de duas variáveis, x e y f(a,b) pode ser obtido substituindo-se por a e b as ocorrências de x e y, resp INE/CTC/UFSC João Bosco da Mota Alves

10 João Bosco da Mota Alves
l – Calculus Então f(x,y) 3 5 = (2*3*5) = 38 INE/CTC/UFSC João Bosco da Mota Alves

11 João Bosco da Mota Alves
l – Calculus Entretanto, há outra forma de se pensar a aplicação de função Ao invés de aplicar-se às duas variáveis simultaneamente, aplica-se à apenas uma de cada vez Primeiro, f(x,y) 3 = 3 + y + (6*y) = g(y) Depois g(y) 5 = (6*5) = 38 INE/CTC/UFSC João Bosco da Mota Alves

12 João Bosco da Mota Alves
l – Calculus É sempre possível transformar uma função de n variáveis em uma função de (n – 1) variáveis, aplicando-a para um valor de um de seus argumentos Esta importante técnica é conhecida como currying E é usada na aplicação de função em cálculo lâmbda INE/CTC/UFSC João Bosco da Mota Alves

13 João Bosco da Mota Alves
l – Calculus Seja, f : R´R ´R -> R, definida por f(x,y,z) = x + y + z Computando f(2,5,4) f(x,y,z) Þ 2 + y + z Þ f(2,y,z) 5 4 Þ z Þ f(2,5,z) 4 Þ Þ 11 INE/CTC/UFSC João Bosco da Mota Alves

14 João Bosco da Mota Alves
l – Calculus A notação lâmbda é uma linguagem de primeira ordem, com Conjunto de nomes de variáveis, V Conjunto de constantes pré-definidas, C Átomo Todo membro de V e de C é um átomo Ex.: 2, ana INE/CTC/UFSC João Bosco da Mota Alves

15 João Bosco da Mota Alves
l – Calculus Expressão lâmbda, L, é definida por Cláusula Básica Todo átomo pertence a L Cláusula Indutiva Se E1, E2 Î L, então (E1 E2) Î L (Regra de aplicação: E1, operador; E2, operando) Se E Î L e v Î V, então (lv.E) Î L (Abstração lâmbda) INE/CTC/UFSC João Bosco da Mota Alves

16 João Bosco da Mota Alves
l – Calculus Cláusula Extrema Uma expressão não é uma expressão lâmbda a menos que possa ser mostrada pertencer a L, pela aplicação das cláusulas básica e indutiva, em um número finito de vezes INE/CTC/UFSC João Bosco da Mota Alves

17 João Bosco da Mota Alves
l – Calculus Na meta-linguagem BNF <exp> ::= <constante> | <variável> | (<exp> <exp>) aplicação | (l <variável> <exp>) l-abstração INE/CTC/UFSC João Bosco da Mota Alves

18 João Bosco da Mota Alves
l – Calculus Ex.: x, z2, 2, 3 e +, são expressões lâmbda que são átomos, pois x, z2 Î V 2, 3, + Î C INE/CTC/UFSC João Bosco da Mota Alves

19 João Bosco da Mota Alves
l – Calculus Como x e 2 são expressões lâmbda, então também o são (pela regra da aplicação) (x 2) ((x 2) 2) (x (2 2)) INE/CTC/UFSC João Bosco da Mota Alves

20 João Bosco da Mota Alves
l – Calculus Para eliminar parênteses, pode-se estabelecer convenções Associação à esquerda, por exemplo E1 E2 E3 = (E1 E2 E3) = ((E1 E2) E3) Note que (E1 (E2 E3)) ¹ E1 E2 E3 INE/CTC/UFSC João Bosco da Mota Alves

21 Simplificações (l – Calculus)
((+ x) y) Þ + x y (((+ x) y) z) Þ + x y z ((x (3 (z 5))) 4) Þ x (3 (z 5)) 4 (x (((3 z) 5) 4)) Þ ? INE/CTC/UFSC João Bosco da Mota Alves

22 João Bosco da Mota Alves
l – Calculus O poder expressivo do cálculo lâmbda, vem das expressões lâmbda geradas pelo uso da regra de aplicação Exemplo de abstrações lâmbda (l x. 2) (l x. (+ x 3)) (l x. x) (l x. (l y. (+ x y))) INE/CTC/UFSC João Bosco da Mota Alves

23 João Bosco da Mota Alves
l – Calculus A variável v de uma abstração lâmbda lv. E é chamada de parâmetro formal A expressão E é chamada de corpo da expressão lâmbda Também podemos ter variáveis livres A variável y, abaixo, é livre; x, não lv. (+ x y) INE/CTC/UFSC João Bosco da Mota Alves

24 João Bosco da Mota Alves
l – Calculus Informalmente, a proposta de uma abstração lâmbda lv. E é fazer uma função de um argumento, v, a partir de uma expressão lâmbda E A função, propriamente dita é o corpo A expressão lâmbda lx. (+ x 3) é lida como a função de x que adiciona x a 3 INE/CTC/UFSC João Bosco da Mota Alves

25 João Bosco da Mota Alves
l – Calculus Abstração lâmbda tem associação à esquerda lx. ly. E = lx. (ly. E) = (lx. (ly. E)) lx. ly. (+ x y) 2 = (lx. (ly. (+ x y) 2)) ¹ (lx. ly. (+ x y)) 2 INE/CTC/UFSC João Bosco da Mota Alves

26 João Bosco da Mota Alves
l – Calculus Já a l-expressão lx. ly. (+ x y) é lida como a função de x que é a função de y que adiciona x a y INE/CTC/UFSC João Bosco da Mota Alves

27 João Bosco da Mota Alves
l – Calculus Seja lx. (+ x 3) Trocando-se x por y, obtem-se a mesma função ly. (+ y 3) Se aplicada a 5, as duas avaliam 8 lx. (+ x 3) 5 = ly. (+ y 3) 5 = 8 Precisa-se de regras de conversão que mostre a equivalência entre l-exp INE/CTC/UFSC João Bosco da Mota Alves

28 Regras de conversão em l – Calculus
a-conversão Uma variável vinculada pode ser consistentemente renomeada, em uma l-expression, se não houver ocorrência livre da mesma lx. (+ x 3) renomeada para ly. (+ y 3) lx. (+ x y) renomeada para lz. (+ z y) Mas não lx. (+ x y) para ly. (+ y y) INE/CTC/UFSC João Bosco da Mota Alves

29 Regras de conversão em l – Calculus
b-conversão A l-expression (lx. E) E’, pode ser reduzida pela substituição, por E’, em todas as ocorrências de x no corpo E, desde que E’ não tenha ocorrência livre da mesma (lx. (+ x 5) 3) reduzida para (+ 3 5) = 8 (lx. ly. (+ x y)) 3 5 para (+ 3 5) = 8 INE/CTC/UFSC João Bosco da Mota Alves

30 Regras de conversão em l – Calculus
(lx. ly. (+ x y)) 3 5 Þ ((lx. (ly. (+ x y))) 3) 5 Þ (ly. (+ 3 y)) 5 Þ (+ 3 5) Þ 8 Viu como a expressão lâmbda tem associação à esquerda? INE/CTC/UFSC João Bosco da Mota Alves

31 Regras de conversão em l – Calculus
A expressão redex significa reducible expression, ou expressão redutível Uma forma normal de redução surge quando se usa a associação à esquerda Ex.: faça por associação à esquerda e à direita, e veja que o resultado é 11 (lx. ly. (+ x y (ly. (+ z 1)) 3)) 2 5 INE/CTC/UFSC João Bosco da Mota Alves

32 João Bosco da Mota Alves
Redex Função identidade como l-expressão (lx. x) 2 = 2 (lx. x) p = p Ou mesmo, INE/CTC/UFSC João Bosco da Mota Alves


Carregar ppt "Cálculo Lâmbda (l – Calculus)"

Apresentações semelhantes


Anúncios Google