Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouLuan Armando Alterado mais de 9 anos atrás
2
1 O -Cálculo & Linguagens Funcionais Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco - Recife - Brasil
3
2 Motivação: O -Cálculo é fundamental para o conceito de computabilidade. O -Cálculo é fundamental para o conceito de computabilidade. n Ele servirá como linguagem intermediária no nosso estudo. Uma linguagem funcional será descrita sobre o -Cálculo. Uma linguagem funcional será descrita sobre o -Cálculo. n Serão analisados mecanismos de avaliação de expressões.
4
3 Programa: Lunes: Introdução ao -Cálculo. Lunes: Introdução ao -Cálculo. Martes: O -Cálculo como uma linguagem de programação. Martes: O -Cálculo como uma linguagem de programação. n Miercoles: Lógica Combinatorial. n Jueves: Garbage Collection. n Viernes:The Fall and Rise of Functional Programming.
5
4 Introdução l l John Backus - 1978 Crise de SoftwareCrise de Software Gargalo de von-NeumannGargalo de von-Neumann l l Linguagens Funcionais Sintaxe mais agradável do que a do Lambda-CalculusSintaxe mais agradável do que a do Lambda-Calculus Programação com funçõesProgramação com funções LISP (1960) foi a primeira linguagem funcionalLISP (1960) foi a primeira linguagem funcional
6
5 Programação Funcional l l Funções de Alta-Ordem Funções são cidadãs de primeira classeFunções são cidadãs de primeira classe l l Transparência Referencial Ausência de assinaladores destrutivos (Linguagens Puras)Ausência de assinaladores destrutivos (Linguagens Puras)
7
6 O -Cálculo l l Alonzo Church (1930) l Lógica de Alta-Ordem l Parte de um sistema para Lógica de Alta-Ordem l Peano-Russell l Fundação matemática (Peano-Russell) l l Inconsistente como Teoria Fundacional
8
7 O -Cálculo l l Subconjunto funcional consistente. definibilidade no -Cálculo computabilidade Turing (1936) unificou os conceitos de definibilidade no -Cálculo e de computabilidade l l Linguagens funcionais são sintaxes “mais bonitas”
9
8 O -Cálculo l Sintaxe: expr :: variável expr :: variável | constante | expr expr | variavel . expr Exemplos: id x x x.x id x x x.x Proj x y z y x y z.y Proj x y z y x y z.y
10
9 O -Cálculo l l Semântica Operacional: Variáveis Livres e Ligadas - x é dita livre em uma expressão- M se: - x é dita livre em uma expressão- M se: 1. M = x 2. M = y.N se x ocorrer livre em N e x!= y 3. M = N O se x ocorrer livre tanto em N quanto em O
11
10 O -Cálculo l l Semântica Operacional: A Conversão- - Trocando o nome de uma variável - Trocando o nome de uma variávelligada x.x y.y
12
11 O -Cálculo l l Semântica Operacional: A Conversão- - Substituição de parâmetros reais por parâmetros formais - Substituição de parâmetros reais por parâmetros formais ( x.t ) s [ s / x ] t onde [ s / x ] t significa t com cada ocorrência livre de x substituída por s
13
12 O -Cálculo l Semântica Operacional: A Conversão- A Conversão- Exemplo: ( x y z.xyz)( a b c.a(bc))( f.f) ( y z.( a b c.a(bc)yz)( f.f) ( z.( a b c.a(bc))( f.f)z) ( z.( b c.( f.f)(bc))z)
14
13 O -Cálculo l Semântica Operacional: A Conversão- A Conversão- - Condição de extensionalidade do sistema - Condição de extensionalidade do sistema ( x. x ) se não houver nenhuma ocorrência de x livre em
15
14 O -Cálculo l Exemplos de redução: 1. ( a. b.a)( i.i)c 2. ( a.aa) ( a.aa) 3. ( a.aaa) ( a.aaa) 4. ( a. b.a)( i.i) (( a.aaa) ( a.aaa)) 8
16
15 O -Cálculo l Teoremas de Church-Rosser 1. Formas normais são únicas (módulo conversão- ) 2. -reduzir a expressão mais externa e mais à esquerda a cada ponto numa sequência de reduções leva a forma normal, se ela existir.
17
16 O -Cálculo l Captura Reduções- realizadas de forma incorretaReduções- realizadas de forma incorreta Exemplo: ( x.( y.yx))y [y/x]( y.yx) y.yy Solução trivial: conversão-
18
17 O -Cálculo de DeBruijn: l Evita Captura. l O nome das variáveis não é importante. l O que importa é a distância sintática entre as variáveis e seus limitadores. l Utilizado em Provadores de Teoremas (Automath) e linguagens de programação.
19
18 Amanhã: O -Cálculo servirá como base para uma linguagem de programação. O -Cálculo servirá como base para uma linguagem de programação.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.