slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Resenha do Artigo PowerPoint Presentation
Download Presentation
Resenha do Artigo

Loading in 2 Seconds...

play fullscreen
1 / 20

Resenha do Artigo - PowerPoint PPT Presentation


  • 100 Views
  • Uploaded on

Monique L. B. Monteiro {mlbm}@cin.ufpe.br. Resenha do Artigo. Implementing lazy functional languages on stock hardware: the Spineless Tagless G-Machine (Parte I). (Simon L. Peyton Jones}. Essência do Artigo. Propor um modelo otimizado e simplificado de compilação de linguagens funcionais

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Resenha do Artigo' - marli


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Monique L. B. Monteiro

{mlbm}@cin.ufpe.br

Resenha do Artigo

Implementing lazy functional languages on stock hardware: the Spineless Tagless G-Machine (Parte I)

(Simon L. Peyton Jones}

ess ncia do artigo
Essência do Artigo
  • Propor um modelo otimizado e simplificado de compilação de linguagens funcionais
  • Expor em detalhes o funcionamento da Spineless Tagless G-Machine
relev ncia para o hs net
Relevância para o HS.NET
  • Entender o modelo básico de compilação utilizado pelo GHC
  • Promover maior intimidade com a compilação de linguagens funcionais em geral
stg vis o geral
STG – Visão geral
  • Máquina abstrata projetada para linguagens funcionais não estritas de alta ordem
  • Utiliza uma linguagem intermediária funcional – STG Language
  • C como linguagem alvo
  • Eficiente
  • Linguagens fortemente tipadas, puramente funcionais e lazy
implementa o
Implementação
  • Combinação de várias outras técnicas
  • Origens em técnicas de redução de grafos
  • Representação de
    • Funções-valor
    • Dados
    • Expressões não avaliadas
    • Aplicação de funções
    • Estruturas case em dados de tipos algébricos
closures

Closures

Closures
  • Objetos do heap
    • Head normal form (ou valores)
    • Objetos não avaliados (thunks)
  • Head Normal form
    • Função-valor
    • Dados
  • Normal Form
    • Não contém thunks
fun es

Variáveis Livres

Código

Funções

- Computação “suspensa”

- Bloco de código compartilhado

- Denominado closure

- Para entrar na closure: ponteiro de ambiente aponta para a mesma

thunks
Thunks
  • Computação “suspensa”
  • Representados por closures
  • Atualizados na primeira avaliação
  • Não são aplicações parciais
  • Não são construtores
atualiza es
Atualizações
  • Naïve reduction model
    • Atualiza após cada redução
    • Um thunk pode ser atualizado com outro: atualização repetida
  • Cell model (Modelo de célula)
    • Flag de status
    • Já foi avaliado: retorna o valor
    • Não foi avaliado: “entra”, calcula o valor
    • Código chamador atualiza o valor e a flag
atualiza es1
Atualizações
  • Self-updating model (Auto-atualização)
    • Utilizado pela STG
    • Atualização feita pelo código interno ao thunk
    • Valor é computado e atualizado OU simplesmente retornado
    • Valor pode ser representado por indireção
    • Não há testes
    • Deve possuir ponteiro para código
  • Nem sempre a atualização precisa ser feita!
atualiza o exemplo

Antes de atualizar

Variáveis Livres

Depois de atualizar (valor grande)

Depois de atualizar (valor pequeno)

Head

Tail

Código de indireção

Atualização: Exemplo
  • Modelo de auto-atualização

Código

Valor

Código do Cons

atualiza o exemplo1

Antes de atualizar

0

1

Variáveis Livres

Código

Atualização: Exemplo
  • Modelo de célula

Depois de atualizar

Valor

aplica o de fun es
Aplicação de Funções
  • Currificação
    • Tipo de f pode ser a -> (b -> a)

(f 1 2) = ((f 1) 2)

(map (f 1) xs)

f x y = x

aplica o da fun es
Aplicação da Funções
  • Modelo eval-apply
    • Funcao é avaliada
    • Argumentos são avaliados
    • Valor-função é aplicado ao argumento
    • Avaliação trivial para funções conhecidas
  • Modelo push-enter (STG, G-machine, TIM)
    • Baseado em redução de grafo
    • Coloca-se o argumento na pilha de avaliação
    • Tail-call (ou entra) a função
    • Não há “return”
modelo push enter
Modelo push-enter
  • Adequado para uso de funções currificadas
  • Os 3 argumentos são empilhados

apply f x y z = f x y z

modelo push enter1
Modelo push-enter
  • Não há alocação explícita de quadros de ativação
  • Pilha de avaliação contígua ao invés de lista ligada de quadros alocados na heap
  • Melhor performance (localidade espacial)
  • Outra alternativa: v,G-machine
    • Espaço de trabalho alocado em cada closure
    • Mal uso de espaço
    • Aplicação parcial: cópia dos argumentos para a closure da aplicação
    • Espaço alocado pode não ser suficiente
tipos alg bricos
Tipos Algébricos
  • Compiladores implementam tipos built-in de forma “mágica”
    • Pior performance para tipos algébricos definidos pelo usuário
  • Mecanismo genérico para compilação de tipos algébricos deveria ser eficiente para tipos built-in!
  • Compilação de expressões case
slide20

Monique L. B. Monteiro

{mlbm}@cin.ufpe.br

Resenha do Artigo

Implementing lazy functional languages on stock hardware: the Spineless Tagless G-Machine (Parte I)

(Simon L. Peyton Jones}