Bullies funcionais

Você é um programador que só aprendeu Java e C e não entende o que esses pedantes de linguagens de programação funcionais ficam falando? A linguagem deles não tem loops e eles acham isso bom? As variáveis são constantes? Como dá pra programar com variáveis que não variam? E ainda por cima eles ficam rindo da sua linguagem imperativa/orientada a objetos?

Seus problemas acabaram! Chegou a explicação supersucinta sobre recursão e linguagens funcionais que vai permitir a você dizer com orgulho: “Eu sei o que significa tail recursion!” e colocar esses valentões em seu devido lugar.

Eis:

Faça uma chamada recursiva como última instrução da sua função, e você terá basicamente um goto com parâmetros! Cada loop será uma função, e todas as variáveis que mudam de valor durante iteração devem ser transformados em parâmetros dessa função.

Dá até pra traduzir de um estilo para o outro mecanicamente, sem pensar muito! As variáveis só mudam de valor nas chamadas de função, aí faz sentido aquela história de “variáveis imutáveis”.

Tirinha relacionada do xkcd:

http://xkcd.com/1270/

Outra leitura interessante:

http://prog21.dadgum.com/23.html

Atenção: este post não oferece proteção contra programadores Haskell que vivem falando de monads. Use por sua conta e risco.