Sim, mas em geral não faz taaaanta diferença exceto em casos que fazem uso pesado de arrays mutáveis
Sempre tem a possibilidade do tal compilador suficientemente inteligente, mas aí a questão é que precisa de muito trabalho em otimizações e mesmo se der certo vão ser tempos de compilação absurdos
Onde "G-Machine" é a máquina abstrata original que o SPJ criou como modelo razoavelmente eficiente pra executar linguagens funcionais com avaliação preguiçosa
Não, STG é a máquina abstrata que o GHC implementa pra processar redução de grafos (i.e. executar programas Haskell) STG = Spineless Tagless G-Machine
É ok mas eu usaria no mesmo escopo que usaria Java
A questão é que é muito fácil valores serem copiados desnecessariamente por operações que não parecem que copiam um valor (mas copiam) e o modelo do Haskell é bem intensivo em RAM
Honestamente leva anos pra ficar decente em otimizar Haskell Eu mesmo sou ruim nisso, não pego 1/3 dos problemas que quem realmente trabalha pega
Não é sobre o caso de uso, é sobre como o programa é escrito Se a pessoa não entende o runtime a fundo e a máquina abstrata STG é muito fácil fazer besteira que destrói a performance
E sobre linguagens de prova, em geral não são competitivas em performance. O foco ali é em corretude e isso restringe bastante quanto tempo vai pra otimização na prática
Elixir "puro" não é o mais adequado pra CPU-bound, mesmo se der pra paralelizar bem - o foco de Elixir é em throughput e não latência, mas tem o Nx pra cobrir casos onde precisa de baixa latência