Arquivo de etiquetas: haskell

Programas Circulares

Introdução

Introduzido originalmente como demonstração do poder da lazy evaluation nas linguagens funcionais nos anos 80, os programas circulares são considerados como uma técnica poderosa, concisa, eficiente e elegante para resolver um particular tipo de problema. Se um algoritmo tiver de percorrer uma estrutura de dados várias vezes, numa linguagem de avaliação atrasada, o mesmo poderá ser expresso com uma única travessia.

Como o nome indica, programas circulares caracterizam-se por a sua definição ter uma aparência circular, isto é, um dos argumentos de uma função depende de um dos argumentos que a mesma função retorna x = f(x). Apesar de um programa circular, numa linguagem com strict evaluation nunca irá terminar, enquanto que numa linguagem lazy às vezes conseguirá terminar. A avaliação atrasada irá sempre obter a ordem correcta de processamento, se essa ordem de facto existir. Assim, a função f pela sua definição será virtualmente circular, já que no momento da sua avaliação irá ser decomposta em não circular.

Continuar a ler

Introdução ao Haskell

Nota histórica

Durante uma conferência em 87 foi decidido que era necessário um standard de linguagem funcional. O Haskell nasceu aí e foi evoluindo aos poucos até em 97 ter sido elaborada a definições base da linguagem, este marco ficou conhecido como Haskell 98. Sendo uma linguagem funcional, destaca-se imediatamente pela inexistência de ciclos e em vez disso é dada preferência ao uso da recursividade. Entre outras características, que podem ser facilmente pesquisadas, Haskell, pode-se considerar strongly typed, pure, lazy evaluation. Para a utilização dos programas de código fonte Haskell, existem duas opções. O uso de interpretadores como por exemplo GHCi, Hugs, ou através da compilação do código, sendo que neste caso utiliza-se o compilador GHC.

Continuar a ler