Sistemas de tipos que evitam vazamentos de memória relacionados à preguiça?


10

Talvez a principal fonte de problemas de desempenho em Haskell seja quando um programa cria inadvertidamente um thunk de profundidade ilimitada - isso causa um vazamento de memória e um potencial estouro de pilha ao avaliar. O exemplo clássico está definindo sum = foldr (+) 0em Haskell.

Existe algum tipo de sistema que imponha estaticamente a falta desses thunks em um programa usando uma linguagem lenta?

Parece que isso deve estar na mesma ordem de dificuldade que provar outras propriedades estáticas do programa usando extensões de sistema de tipos, por exemplo, alguns tipos de segurança de thread ou de memória.

Respostas:


4

A chamada de Levy pelo cálculo do valor push faz uma distinção entre valores e seus thunks. Para um valor vdo tipo, tya computação thunk vtem tipo U ty. A linguagem Frank de Lindley e McBride , inspirada no CBPV, também torna explícita essa distinção entre cálculos e valores, embora, ao contrário de Haskell, Frank seja rigoroso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.