Projeto 1 de PLP Equipe: Daniel Leitão (dal) Dante Torres (dgt) Pablo Sampaio (pas)

9
22/06/2004 Centro de Informática - UFPE Projeto 1 de PLP Equipe: Daniel Leitão (dal) Dante Torres (dgt) Pablo Sampaio (pas) Implementação de Lazy Evaluation a partir da Linguagem Funcional 2

description

Implementação de Lazy Evaluation a partir da Linguagem Funcional 2. Projeto 1 de PLP Equipe: Daniel Leitão (dal) Dante Torres (dgt) Pablo Sampaio (pas). Sumário. Lazy Evaluation Projeto Proposto Alterações em LF2 Exemplos. Lazy Evaluation. - PowerPoint PPT Presentation

Transcript of Projeto 1 de PLP Equipe: Daniel Leitão (dal) Dante Torres (dgt) Pablo Sampaio (pas)

Page 1: Projeto 1 de PLP Equipe:  Daniel Leitão (dal) Dante Torres (dgt) Pablo Sampaio (pas)

22/06/2004 Centro de Informática - UFPE

Projeto 1 de PLPEquipe: Daniel Leitão (dal)

Dante Torres (dgt)Pablo Sampaio (pas)

Implementação de Lazy Evaluation a partir da Linguagem Funcional 2

Page 2: Projeto 1 de PLP Equipe:  Daniel Leitão (dal) Dante Torres (dgt) Pablo Sampaio (pas)

22/06/2004 Centro de Informática – UFPE Projeto de PLP

Sumário

Lazy Evaluation Projeto Proposto Alterações em LF2 Exemplos

Page 3: Projeto 1 de PLP Equipe:  Daniel Leitão (dal) Dante Torres (dgt) Pablo Sampaio (pas)

22/06/2004 Centro de Informática – UFPE Projeto de PLP

Lazy Evaluation

Consiste na avaliação dos argumentos de uma função somente no momento em que forem utilizados pela primeira vez, e não imediatamente no momento da chamada da função.

Exemplo: let fun f1 a b = a in

f1(2,1/0)

Page 4: Projeto 1 de PLP Equipe:  Daniel Leitão (dal) Dante Torres (dgt) Pablo Sampaio (pas)

22/06/2004 Centro de Informática – UFPE Projeto de PLP

Projeto Proposto

Estende LF2 com: Lazy Evaluation

Parâmetros de funções Váriaveis locais (em let) Curto-circuito (operadores or e and) Otimização

Novos operadores Aritméticos: divisão (/) e multiplicação (*) Relacionais: menor (<) e maior (>)

Page 5: Projeto 1 de PLP Equipe:  Daniel Leitão (dal) Dante Torres (dgt) Pablo Sampaio (pas)

22/06/2004 Centro de Informática – UFPE Projeto de PLP

Principais Alterações em LF2

Interface AmbienteExecucaoLazy void mapExpressao (Id idArg, Expressao exp) Expressao getExpressao(Id idArg) void atualizaId (Id idArg, Expressao expI d)

Classe ContextoExecucaoLazy Implementação da interface

AmbienteExecucaoLazy

Page 6: Projeto 1 de PLP Equipe:  Daniel Leitão (dal) Dante Torres (dgt) Pablo Sampaio (pas)

22/06/2004 Centro de Informática – UFPE Projeto de PLP

Principais Alterações em LF2

Interface Expressao Valor avaliar (AmbienteExecucaoLazy amb)

Classe ExpDeclaracao void includeBindings (

AmbienteExecucaoLazy ambiente,Map auxIdExpressao,Map auxIdValorFuncao)

Page 7: Projeto 1 de PLP Equipe:  Daniel Leitão (dal) Dante Torres (dgt) Pablo Sampaio (pas)

22/06/2004 Centro de Informática – UFPE Projeto de PLP

Principais Alterações em LF2

Classe Aplicacao Map resolveParametersBindings (

AmbienteExecucaoLazy ambiente, ValorFuncao funcao)

void includeValueBindings ( AmbienteExecucaoLazy ambiente,Map mapIdExp)

Classe Id Valor avaliar(AmbienteExecucaoLazy ambiente)

Page 8: Projeto 1 de PLP Equipe:  Daniel Leitão (dal) Dante Torres (dgt) Pablo Sampaio (pas)

22/06/2004 Centro de Informática – UFPE Projeto de PLP

Principais Alterações em LF2

Classe ExpOr Valor avaliar(AmbienteExecucaoLazy ambiente)

Classe ExpAnd Valor avaliar(AmbienteExecucaoLazy ambiente)

Page 9: Projeto 1 de PLP Equipe:  Daniel Leitão (dal) Dante Torres (dgt) Pablo Sampaio (pas)

22/06/2004 Centro de Informática – UFPE Projeto de PLP

Exemplos

http://www.cin.ufpe.br/~dgt/PLP/pagina/