Programação funcional? O que diabos é isso?
Pedro Henrique
121

Dá para otimizar no Haskell usando lazy evaluation sem precisar definir um caso de saída. :D

infiniteFib = [0, 1] ++ zipWith (+) infiniteFib (tail infiniteFib)
fib = flip take fibs

Nesse caso, infiniteFib se comporta como um gerador, zipWith vai compactar os itens da lista em soma com ela mesma junto ao resto infinito dos cálculos.
fib é apenas um auxiliar que vai inverter os parâmetros de take (usando point-free-programming) e aplicar parcialmente a fibs, bastando apenas receber um valor {n}.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.