DEV Community

Discussion on: Mas e os loops em Elixir?

Collapse
adolfont profile image
Adolfo Neto • Edited on

Oi Willian, poderia explicar melhor o que você quis dizer com "Por padrão, Elixir/Erlang implementam Tail Call Optimization, por isso a utilização de recursividade é algo muito comum e encorajada! Inclusive as High Order Functions são implementadas através de recursividade, no final das contas."?

Não preciso escrever minhas funções com TCO? Erlang converte elas para TCO ao compilar?

Collapse
wlsf profile image
Willian Frantz Author

Boa noite professor, como comentei com você, seria mais ou menos isso mesmo. Erlang enquanto linguagem funcional, tem uma forte base de interpretação de funções recursivas para conseguir entender quando eliminar as ultimas chamadas (jumps) de suas execuções.

Com isso, geralmente funções recursivas irão ocupar o mesmo tanto de memória que uma função com TCO. O que elimina o problema citado no texto, de estourar a pilha de chamadas.