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 (+) 0
em 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.