1 aula 11 linguagens declarativas emultiparadigma universidade do vale do rio dos sinos barbosa...
TRANSCRIPT
![Page 1: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/1.jpg)
1
Aula 11Aula 11Linguagens DeclarativasLinguagens Declarativas
eeMultiparadigmaMultiparadigma
Universidade do Vale do Rio dos Sinos
< Página da Disciplina >
www.inf.unisinos.br/~barbosawww.inf.unisinos.br/~barbosa
<Endereço do Professor >
[email protected]@exatas.unisinos.br
![Page 2: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/2.jpg)
2
1 – Abordagem do Sebesta para Funcionais
SumárioSumário
![Page 3: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/3.jpg)
3
1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas
SumárioSumário
![Page 4: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/4.jpg)
4
1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas
SumárioSumário
![Page 5: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/5.jpg)
5
1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas4 – Implementação de Funcionais
SumárioSumário
![Page 6: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/6.jpg)
6
1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas4 – Implementação de Funcionais5 – Proposta do Holo
SumárioSumário
![Page 7: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/7.jpg)
7
1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas
3 – Implementação de Lógicas4 – Implementação de Funcionais5 – Proposta do Holo
SumárioSumário
![Page 8: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/8.jpg)
8
1 – Abordagem do Sebesta para Funcionais - Introdução - Funções matemáticas - Fundamentos da linguagens funcionais - LISP (1970) - Scheme (dialeto LISP, 1975) - Common LISP (1980) - ML (1990) - Haskell (1996) - Aplicações da funcionais - Comparação entre funcionais e imperativas
SumárioSumário
![Page 9: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/9.jpg)
9
1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas - Introdução - Cálculo de predicados - Demonstração de teoremas - Visão geral da programação em lógica - Origens do Prolog - Elementos básicos do Prolog - Deficiências do Prolog - Aplicações da programação em lógica
SumárioSumário
![Page 10: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/10.jpg)
10
1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas
SumárioSumário
![Page 11: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/11.jpg)
11
1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas
SumárioSumário
![Page 12: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/12.jpg)
12
ImplementaçãoImplementação• Warren’s Abstract Machine (WAM) David Warren , 1983
![Page 13: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/13.jpg)
13
ImplementaçãoImplementação• Warren’s Abstract Machine (WAM) David Warren , 1983• Máquina Abstrata: - Representação de dados - Instruções de máquina
![Page 14: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/14.jpg)
14
ImplementaçãoImplementação• Warren’s Abstract Machine (WAM) David Warren , 1983• Máquina Abstrata: - Representação de dados - Instruções de máquina• Arquitetura da WAM
![Page 15: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/15.jpg)
15
ImplementaçãoImplementação• Warren’s Abstract Machine (WAM) David Warren , 1983• Máquina Abstrata: - Representação de dados - Instruções de máquina• Arquitetura da WAM
![Page 16: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/16.jpg)
16
Arquitetura da WAMArquitetura da WAM
LOW
HIGH
![Page 17: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/17.jpg)
17
Arquitetura da WAMArquitetura da WAM
Code AreaLOW
HIGH
Opcodes
![Page 18: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/18.jpg)
18
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
LOW
HIGH
Células contendovariáveis, estruturas e constantes
Opcodes
![Page 19: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/19.jpg)
19
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
STACK
LOW
HIGH
Pontos de Escolha e Ambientes
Opcodes
Células contendovariáveis, estruturas e constantes
![Page 20: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/20.jpg)
20
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
STACK
TRAIL
LOW
HIGH
Variáveis que devemser desligadas no backtracking
Pontos de Escolha e Ambientes
Opcodes
Células contendovariáveis, estruturas e constantes
![Page 21: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/21.jpg)
21
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
STACK
TRAIL
PDL
LOW
HIGHPush Down ListPilha usada pelo algoritmo de unificação
Variáveis que devemser desligadas no backtracking
Pontos de Escolha e Ambientes
Opcodes
Células contendovariáveis, estruturas e constantes
![Page 22: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/22.jpg)
22
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
STACK
TRAIL
PDL
LOW
HIGH
REGISTRADORES
![Page 23: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/23.jpg)
23
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
STACK
TRAIL
PDL
LOW
HIGH
REGISTRADORES
Registradoresde
Argumentos
A1A2A3.........An
![Page 24: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/24.jpg)
24
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
STACK
TRAIL
PDL
LOW
HIGH
Registradoresde
Argumentos
A1A2A3.........An
REGISTRADORES
RegistradoresTemporários
X1X2X3.........Xn
![Page 25: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/25.jpg)
25
ImplementaçãoImplementação• Warren’s Abstract Machine (WAM) David Warren , 1983• Máquina Abstrata: - Representação de dados - Instruções de máquina• Arquitetura da WAM• Representação de dados e compilação
![Page 26: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/26.jpg)
26
ImplementaçãoImplementação• Warren’s Abstract Machine (WAM) David Warren , 1983• Máquina Abstrata: - Representação de dados - Instruções de máquina• Arquitetura da WAM• Representação de dados e compilação
![Page 27: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/27.jpg)
27
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
STACK
TRAIL
PDL
LOW
HIGH
![Page 28: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/28.jpg)
28
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
STACK
TRAIL
PDL
LOW
HIGH
p(Z,h(Z,W),f(W))
![Page 29: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/29.jpg)
29
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
STACK
TRAIL
PDL
LOW
HIGH
p(Z,h(Z,W),f(W))
STR 1
h / 2
REF 2
REF 3
0
12
3
![Page 30: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/30.jpg)
30
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
STACK
TRAIL
PDL
LOW
HIGH
p(Z,h(Z,W),f(W))
STR 1
h / 2
REF 2
REF 3
STR 5
f / 1
REF 3
0
12
3
4
5
6
![Page 31: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/31.jpg)
31
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
STACK
TRAIL
PDL
LOW
HIGH
p(Z,h(Z,W),f(W))
STR 1
h / 2
REF 2
REF 3
STR 5
f / 1
REF 3
STR 8
p / 3
REF 2
STR 1
STR 5
0
12
3
4
5
6
78
9
10
11
![Page 32: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/32.jpg)
32
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
STACK
TRAIL
PDL
LOW
HIGH
?- p(Z,h(Z,W),f(W)).
![Page 33: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/33.jpg)
33
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
STACK
TRAIL
PDL
LOW
HIGH
1. put_variable Xi,Ai2. put_structure f/n,Ai3. set_variable Xi4. set_value Xi5. call f/n
?- p(Z,h(Z,W),f(W)).
![Page 34: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/34.jpg)
34
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
STACK
TRAIL
PDL
LOW
HIGH
put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3
?- p(Z,h(Z,W),f(W)).
1. put_variable Xi,Ai2. put_structure f/n,Ai3. set_variable Xi4. set_value Xi5. call f/n
![Page 35: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/35.jpg)
35
?- p(Z,h(Z,W),f(W)).
put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3
![Page 36: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/36.jpg)
36
REF 0 0
?- p(Z,h(Z,W),f(W)).
put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3
A1
X4
![Page 37: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/37.jpg)
37
?- p(Z,h(Z,W),f(W)).REF 0 0
?- p(Z,h(Z,W),f(W)).
put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3
A1
X4 h / 2
A2
1
![Page 38: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/38.jpg)
38
?- p(Z,h(Z,W),f(W)).?- p(Z,h(Z,W),f(W)).REF 0 0
?- p(Z,h(Z,W),f(W)).
put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3
A1
X4 h / 2
A2
1
REF 0 3
![Page 39: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/39.jpg)
39
?- p(Z,h(Z,W),f(W)).?- p(Z,h(Z,W),f(W)).REF 0 0
?- p(Z,h(Z,W),f(W)).
put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3
A1
X4 h / 2
A2
1
REF 0 2
REF 3 3X5
![Page 40: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/40.jpg)
40
?- p(Z,h(Z,W),f(W)).?- p(Z,h(Z,W),f(W)).REF 0 0
?- p(Z,h(Z,W),f(W)).
put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3
A1
X4 h / 2
A2
1
REF 0 2
REF 3 3X5 f / 1 4A3
![Page 41: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/41.jpg)
41
?- p(Z,h(Z,W),f(W)).?- p(Z,h(Z,W),f(W)).REF 0 0
?- p(Z,h(Z,W),f(W)).
put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3
A1
X4 h / 2
A2
1
REF 0 2
REF 3 3X5 f / 1 4A3 REF 3 5
![Page 42: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/42.jpg)
42
?- p(Z,h(Z,W),f(W)).?- p(Z,h(Z,W),f(W)).REF 0 0
?- p(Z,h(Z,W),f(W)).
put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3
A1
X4 h / 2
A2
1
REF 0 2
REF 3 3X5 f / 1 4A3 REF 3 5
![Page 43: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/43.jpg)
43
?- p(Z,h(Z,W),f(W)).?- p(Z,h(Z,W),f(W)).REF 0 0
?- p(Z,h(Z,W),f(W)).
put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3
A1
X4 h / 2
A2
1
REF 0 2
REF 3 3X5 f / 1 4A3 REF 3 5
![Page 44: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/44.jpg)
44
?- p(Z,h(Z,W),f(W)).?- p(Z,h(Z,W),f(W)).REF 0 0
?- p(Z,h(Z,W),f(W)
put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3
A1
X4 h / 2
A2
1
REF 0 2
REF 3 3X5 f / 1 4A3 REF 3 5
![Page 45: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/45.jpg)
45
?- p(Z,h(Z,W),f(W)).?- p(Z,h(Z,W),f(W)).REF 0 0
?- p(Z,h(Z,W),f(W)).
put_variable X4,A1put_structure h/2,A2set_value X4set_variable X5put_structure f/1,A3set_value X5call p/3
A1
X4 h / 2
A2
1
REF 0 2
REF 3 3X5 f / 1 4A3 REF 3 5
Procedimento p/3na área de código
![Page 46: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/46.jpg)
46
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
STACK
TRAIL
PDL
LOW
HIGH
p(f(X),h(Y,f(a)),Y).
![Page 47: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/47.jpg)
47
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
STACK
TRAIL
PDL
LOW
HIGH
1. get_structure f/n,Xi2. unify_variable Xi3. unify_value Xi4. get_value Xn,Na5. unify_constant C6. proceed
p(f(X),h(Y,f(a)),Y).
![Page 48: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/48.jpg)
48
Arquitetura da WAMArquitetura da WAM
Code Area
HEAP
STACK
TRAIL
PDL
LOW
HIGH
p(f(X),h(Y,f(a)),Y).1. get_structure f/n,Xi2. unify_variable Xi3. unify_value Xi4. get_value Xn,Na5. unify_constant C6. proceed
p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed
![Page 49: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/49.jpg)
49
?- p(Z,h(Z,W),f(W)).
p(f(X),h(Y,f(a)),Y).
![Page 50: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/50.jpg)
50
?- p(Z,h(Z,W),f(W)).
p(f(X),h(Y,f(a)),Y).
REF 0 0A1h / 2
A2
1
REF 0 2
REF 3 3
f / 1 4A3 REF 3 5
![Page 51: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/51.jpg)
51
?- p(Z,h(Z,W),f(W)).
p(f(X),h(Y,f(a)),Y).
REF 0 0A1h / 2
A2
1
REF 0 2
REF 3 3
f / 1 4A3 REF 3 5
p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed
![Page 52: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/52.jpg)
52
?- p(Z,h(Z,W),f(W)).
p(f(X),h(Y,f(a)),Y).
REF 0 -> 6 0A1h / 2
A2
1
REF 0 2
REF 3 3
f / 1 4A3 REF 3 5
p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed
STR 7 6
f / 1 7
![Page 53: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/53.jpg)
53
?- p(Z,h(Z,W),f(W)).
p(f(X),h(Y,f(a)),Y).
REF 0 -> 6 0A1h / 2
A2
1
REF 0 2
REF 3 3
f / 1 4A3 REF 3 5
p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed
STR 7 6
f / 1 7
REF 8 8X4
![Page 54: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/54.jpg)
54
?- p(Z,h(Z,W),f(W)).
p(f(X),h(Y,f(a)),Y).
REF 0 -> 6 0A1h / 2
A2
1
REF 0 2
REF 3 3
f / 1 4A3 REF 3 5
p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed
STR 7 6
f / 1 7
REF 8 8X4
![Page 55: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/55.jpg)
55
?- p(Z,h(Z,W),f(W)).
p(f(X),h(Y,f(a)),Y).
REF 0 -> 6 0A1h / 2
A2
1
REF 0 2
REF 3 3
f / 1 4A3 REF 3 5
p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed
STR 7 6
f / 1 7
REF 8 8X4
X5 REF 2
![Page 56: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/56.jpg)
56
?- p(Z,h(Z,W),f(W)).
p(f(X),h(Y,f(a)),Y).
REF 0 -> 6 0A1h / 2
A2
1
REF 0 2
REF 3 3
f / 1 4A3 REF 3 5
p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed
STR 7 6
f / 1 7
REF 8 8X4
X5 REF 2
X6 REF 3
![Page 57: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/57.jpg)
57
?- p(Z,h(Z,W),f(W)).
p(f(X),h(Y,f(a)),Y).
REF 0 -> 6 0A1h / 2
A2
1
REF 0 2
REF 3 3
f / 1 4A3 REF 3 5
p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed
STR 7
6
f / 1 7
REF 8 8X4
X5 REF 2
X6 REF 3
STR 7
![Page 58: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/58.jpg)
58
?- p(Z,h(Z,W),f(W)).
p(f(X),h(Y,f(a)),Y).
REF 0 -> 6 0A1h / 2
A2
1
REF 0 2
REF 3 3
f / 1 4A3 REF 3 5
p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed
STR 7
6
f / 1 7
REF 8 8X4
X5 REF 2
X6 REF 3
STR 7
unify X5,A3
![Page 59: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/59.jpg)
59
?- p(Z,h(Z,W),f(W)).
p(f(X),h(Y,f(a)),Y).
REF 0 -> 6 0A1h / 2
A2
1
REF 0 2
REF 3 3
f / 1 4A3 REF 3 5
p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed
STR 7
6
f / 1 7
REF 8 8X4
X5 REF 2
X6 REF 3
STR 7
unify X5,A3
![Page 60: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/60.jpg)
60
?- p(Z,h(Z,W),f(W)).
p(f(X),h(Y,f(a)),Y).
REF 0 -> 6 0A1h / 2
A2
1
REF 0 2
REF 3 3
f / 1 4A3 REF 3 5
p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed
STR 7
6
f / 1 7
REF 8 8X4
X5 REF 2
X6 REF 3
STR 7
unify X5,A3
![Page 61: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/61.jpg)
61
?- p(Z,h(Z,W),f(W)).
p(f(X),h(Y,f(a)),Y).
REF 0 -> 6 0A1h / 2
A2
1
REF 0 2
REF 3 3
f / 1 4A3 REF 3 5
p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed
STR 7
6
f / 1 7
REF 8 -> 3 8X4
X5 REF 2
X6 REF 3
STR 7
unify X5,A3
![Page 62: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/62.jpg)
62
?- p(Z,h(Z,W),f(W)).
p(f(X),h(Y,f(a)),Y).
REF 0 -> 6 0A1h / 2
A2
1
REF 0 2
REF 3 -> 9 3
f / 1 4A3 REF 3 5
p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed
STR 7
6
f / 1 7
REF 8 - > 3 8X4
X5 REF 2
X6 REF 3
STR 7
9
f / 1 10
STR 10
![Page 63: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/63.jpg)
63
?- p(Z,h(Z,W),f(W)).
p(f(X),h(Y,f(a)),Y).
REF 0 -> 6 0A1h / 2
A2
1
REF 0 2
REF 3 -> 9 3
f / 1 4A3 REF 3 5
p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed
STR 7
6
f / 1 7
REF 8 - > 3 8X4
X5 REF 2
X6 REF 3
STR 7
9
f / 1 10
STR 10
11 CON a
![Page 64: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/64.jpg)
64
?- p(Z,h(Z,W),f(W)).
p(f(X),h(Y,f(a)),Y).
REF 0 -> 6 0A1h / 2
A2
1
REF 0 2
REF 3 -> 9 3
f / 1 4A3 REF 3 5
p/3: get_structure f/1,A1 unify_variable X4 get_structure h/2,A2 unify_variable X5 unify_variable X6 get_value X5,A3 get_structure f/1,X6 unify_constant a proceed
STR 7
6
f / 1 7
REF 8 - > 3 8X4
X5 REF 2
X6 REF 3
STR 7
9
f / 1 10
STR 10
11 CON a
Retorna para local da chamadaInstanciações resultantes: Z = f(f(a)) e W = f(a)
![Page 65: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/65.jpg)
65
Código gerado para uma cláusulaCódigo gerado para uma cláusula
p(X,Y) :- q(X,Z), r(Z,Y).
p/2 : allocate 2 get_variable X3,A1 get_variable Y1,A2 put_value X3,A1 put_variable Y2,A2 call q/2 put_variable Y2,A1 put_value Y1,A2 call r/2 deallocate
![Page 66: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/66.jpg)
66
Código gerado para uma cláusulaCódigo gerado para uma cláusula
p(X,Y) :- q(X,Z), r(Z,Y).
p/2 : allocate 2 get_variable X3,A1 get_variable Y1,A2 put_value X3,A1 put_variable Y2,A2 call q/2 put_variable Y2,A1 put_value Y1,A2 call r/2 deallocate
![Page 67: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/67.jpg)
67
1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas4 – Implementação de Funcionais - Normalmente utilizam máquinas abstratas - Normalmente máquinas baseadas em redução de grafos - G-Machine
SumárioSumário
![Page 68: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/68.jpg)
68
1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas4 – Implementação de Funcionais - Normalmente utilizam máquinas abstratas - Normalmente máquinas baseadas em redução de grafos - G-Machine
SumárioSumário
![Page 69: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/69.jpg)
69
G-MachineG-Machine
Compilador
G-Machine(run-time)
Definições de funções (programa)
Programa em G-Code
![Page 70: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/70.jpg)
70
1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas4 – Implementação de Funcionais - Normalmente utilizam máquinas abstratas - Normalmente máquinas baseadas em redução de grafos - G-Machine - Linguagem Fun
SumárioSumário
![Page 71: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/71.jpg)
71
Linguagem FunLinguagem Fun
Compilador que gera G-Code
(escrito em Haskell)
G-Machine(implementada em
Java)
Programa em Fun
Classes Java (G-Code)
JVM
![Page 72: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/72.jpg)
72
1 – Abordagem do Sebesta para Funcionais2 – Abordagem do Sebesta para Lógicas3 – Implementação de Lógicas4 – Implementação de Funcionais5 – Proposta do Holo
SumárioSumário
![Page 73: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/73.jpg)
73
HoloplataformaHoloplataforma
HoloJava
Programa em Holo
Classes Java
JavaCByte Code
JVM
Hardware + SO
• Imperativo• Lógica• Funcional• Concorrente
![Page 74: 1 Aula 11 Linguagens Declarativas eMultiparadigma Universidade do Vale do Rio dos Sinos barbosa barbosa@exatas.unisinos.br](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc111497959413d8c6289/html5/thumbnails/74.jpg)
74
HoloplataformaHoloplataforma
HoloJava
Programa em Holo
Classes Java
JavaCByte Code
JVM
Hardware + SO
• Imperativo• Lógica• Funcional• Concorrente
HoloCompilerByte Code
HoloVM
Hardware + SO