90 likes | 206 Views
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.
E N D
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 • 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)
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 (>)
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
Principais Alterações em LF2 Interface Expressao • Valor avaliar (AmbienteExecucaoLazy amb) Classe ExpDeclaracao • voidincludeBindings ( AmbienteExecucaoLazy ambiente, Map auxIdExpressao, Map auxIdValorFuncao)
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)
Principais Alterações em LF2 Classe ExpOr • Valor avaliar(AmbienteExecucaoLazy ambiente) Classe ExpAnd • Valor avaliar(AmbienteExecucaoLazy ambiente)
Exemplos • http://www.cin.ufpe.br/~dgt/PLP/pagina/