Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouLuciana Alvarenga Chaves Alterado mais de 8 anos atrás
1
Lógicas Combinatoriais e Implementações Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco
2
Lógica Combinatorial n n Moses Schönfinkel - 1920 Eliminação das variáveis da lógica de primeira ordem Eliminação das variáveis da lógica de primeira ordem Combinação de funções constantes (combinadores) através de aplicações Combinação de funções constantes (combinadores) através de aplicações n n Haskell B. Curry Redescobriu a lógica combinatorial Redescobriu a lógica combinatorial
3
n Evita o problema da captura x.( y.yx)) y [y/x] x.( y.yx)) = y.yy Equivalente ao -Calculus Equivalente ao -Calculus Bracket Abstraction Algorithm Bracket Abstraction Algorithm Expressão em combinadores SK Lógica Combinatorial
4
[ x] = x [ a b] = [ a] [ b] [ x.a ] = [x ] [a ] [x ] x = S K K [x ] y = K y, se x y é var e Cte [x ] (ab) = S ([x ] a) ([x ] b) Bracket Abstraction Algorithm Schönfinkel - 1924
5
S = a. b. c.ac (bc) [ a] ([ b] ([ c] ac (bc))) [ a] ([ b] ([ c] ac (bc))) = [ a] ([ b] (S([ c] ac) ( [ c] bc))) = [ a] ([ b] (S( S ([ c] a) ([c] c)) (S ( [ c] b) ([c] c))) = [ a] ([ b] (S( S (K a ) (SKK) (S (K b) (SKK))) Bracket Abstraction Algorithm Exemplo:
6
Y = f.( y.f(yy))( y.f(yy)))...... = (S(S(KS)(S(KK)(SKK))) = (S(S(KS)(S(KK)(SKK))) (K(S(SKK)(SKK)))) (K(S(SKK)(SKK)))) (S(S(KS)(S(KK)(SKK))) (S(S(KS)(S(KK)(SKK))) (K(S(SKK)(SKK)))) (K(S(SKK)(SKK)))) Bracket Abstraction Algorithm Exemplo:
7
K a b => a K a b => a S a b c => a c (b c) I a => a aplicação: associativa a esquerda abc = (ab) c Regras de Redução
8
l SASL ( St. Andrews Static Language ) v v Interpretador v v 1a linguagem para ensino v v Utilizou SECD l Primeiro a explorar a tradução de linguagens funcionais para combinadores Máquina de Turner
9
l Lógica combinatorial pura v v S, K e I v v Explosão exponencial do código l Grande conjunto de combinadores v v Evita a geração de K v v Novo algoritmo de abstração v v Expansão quadrática do código Máquina de Turner
10
[ x] = x [ a b] = [ a] [ b] [ x.a ] = [x ] [a ] [x ] x = I [x ] y = K y, x y é var e Cte [x ] (a b) = B a ([x ] b), se a Cte [x ] (a b) = C ([x ] a) b, se b Cte [x ] (a b) = S ([x ] a) ([x ] b) Bracket Abstraction Algorithm Turner - 1979
11
[x ] ((a b) c) = B1 a b ([x ] c), a e b Cte [x ] ((a b) c) = C1 a ([x ] b) c, a e c Cte [x ] ((a b) c) = S1 a ([x ] b) ([x ] c), a Cte Bracket Abstraction Algorithm Turner - 1979
12
I x x K c x c S f g x f x (g x) B f g x f (g x) C f g x f x g S1 c f g x c (f x) (g x) B1 c f g x c f (g x) C1 c f g x c (f x) g Y x x (Y x) Combinadores de Turner
13
l Máquina de redução de Grafos l Máquina de redução de Grafos para interpretar as expressões de combinadores l Stack: l Stack: próximo combinador mais a esquerda l unwind l unwind local após cada redução Máquina de Turner
14
l l Operador de ponto fixo explícito Y x => x (Y x) Y x => x (Y x) l knot-tieing l Estratégia knot-tieing para manipulação de grafos Máquina de Turner @ y x @ y @ y x y x @y
15
De interpretação `a Compilação n Cardelli (1983) - FAM v Linguagens Funcionais estritas n Johnsson (1987) - Máquina G vMelhores características da máquina SECD e a máquina de Turner
16
A Máquina G l Johnsson (1987) - Chalmers l Funciona como um interpretador com geração de grafos preguiçosa l Primeira implementação eficiente para linguagem funcional preguiçosa l O grafo é gerado apenas quando necessário
17
A Máquina G l A forma de controlar o fluxo de execução e avaliação foi seguida por: Spineless G-Machine Spineless Tagless G-Machine TIM GM-C
18
list 0, where list n = square n : list (suc n) list n = square n : list (suc n) square x = x * x suc x = x + 1 0 list @ suc 0 @ square @ list @ :
19
0 suc 0 @ list @ : Output: 0 suc 0 @ list @ suc @ square @ list @ : 0 suc @ 0 1 1 @ list @ : 0
20
Máquinas Categóricas n Teoria das Categorias Teoria de funções útil para implementar linguagens funcionaisTeoria de funções útil para implementar linguagens funcionais n Combinadores Categóricos CAM: máquina de pilhaCAM: máquina de pilha
21
n n Lins Implementações baseadas em Multi-Combinadores CategóricosImplementações baseadas em Multi-Combinadores Categóricos C foi usado como um macro- assemblerC foi usado como um macro- assembler ¨ Portabilidade ¨ Simplicidade ¨ Eficiência Controle de Fluxo - Máquina AbstrataControle de Fluxo - Máquina Abstrata Máquinas Categóricas
22
CMC n Controle de fluxo em C n Funções Especiais Funções estritas em todos seus argumentos que produz tipos básicos como resultadoFunções estritas em todos seus argumentos que produz tipos básicos como resultado Traduzida diretamente para CTraduzida diretamente para C Vantagens do rápido chaveamento de contexto das máquinas RISCVantagens do rápido chaveamento de contexto das máquinas RISC Expressões AritméticasExpressões Aritméticas
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.