Skip to content

Instantly share code, notes, and snippets.

@rodolfo42
Created October 22, 2013 15:48
Show Gist options
  • Save rodolfo42/7103091 to your computer and use it in GitHub Desktop.
Save rodolfo42/7103091 to your computer and use it in GitHub Desktop.
Resumo sobre a apresentação de Tail Recursion para o Blog da Bluesoft

Tail Recursion

O paradigma da programação funcional está cada vez ganhando mais antenção no mercado, especialmente o interesse em linguagens funcionais como Scala, Clojure, LISP, Scheme, OCaml, entre outras.

Uma das razões para este interesse é o fato de que a maneira funcional de pensar vem se mostrando cada vez mais útil e produtiva em relação á abordagens tradicionais como orientação à objetos, especialmente para os novos problemas dos dias de hoje.

Na base do pensamento funcional está a premissa de que funções são representações como qualquer outra em uma linguagem, assim como números, strings e objetos e, portanto, podem ser definidas com liberdade, passadas como parâmetros para outras funções, serem valores de retorno de outras funções, etc.

Nesta apresentação, introduzo um aspecto da programação funcional que se chama tail recursion (ou tail call). É basicamente uma otimização que o compilador exerce ao detectar que a última expressão em uma função é em si nada mais que uma chamada para uma função (seja para ela mesma ou outra).

Desta maneira, é possível construir funções recursivas sem a preocupação com o caso de stack overflow (ou estouro de pilha), e desta maneira melhorando o reuso de código e legibilidade, e ao mesmo tempo evitando bugs!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment