A Linguagem Funcional Haskell - Departamento de Informática e ...
A Linguagem Funcional Haskell - Departamento de Informática e ...
A Linguagem Funcional Haskell - Departamento de Informática e ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Através <strong>de</strong>ste exemplo temos conhecimento<strong>de</strong> como são feitos comentários <strong>de</strong> linha. Utilizamosdois sinais <strong>de</strong> menos (- -) consecutivos e tudo quefor escrito após não será reconhecido pelocompilador.Após este breve comentário continuamosfalando sobre funções e por intermédio do mesmoexemplo, que é chamado <strong>de</strong> função <strong>de</strong> curried. Umaaplicação <strong>de</strong> add tem a forma add e 1 e 2 , e issoeqüivale a (add e 1 ) e 2 , <strong>de</strong>s<strong>de</strong> que a associação daaplicação da função seja para a esquerda. Em outraspalavras, aplicando add a um argumento, istoproduzirá uma nova função ao qual é então aplicadoo segundo argumento. Isto é consistente com o tipo<strong>de</strong> add; Int → Int → Int.Sendo assim nós po<strong>de</strong>mos re<strong>de</strong>finir afunção inc <strong>de</strong> um modo diferente da que<strong>de</strong>monstramos anteriormente, agora po<strong>de</strong>mosutilizar a função add. Esta maneira queapresentamos agora o é uma aplicação parcial <strong>de</strong>uma função curried.Inc = add 1Sendo a linguagem <strong>Haskell</strong> baseada quaseque totalmente no Cálculo Lambda, po<strong>de</strong>mos<strong>de</strong>finir as mesmas funções <strong>de</strong> maneira muito maisreduzida e simplificada, mas não iremos <strong>de</strong>monstrare ou entrar em <strong>de</strong>talhes pois exigiria, como jáfalamos antes, um conhecimento prévio do leitorsobre o cálculo lambda para que este conseguisseenten<strong>de</strong>r.Po<strong>de</strong>mos acompanhar o comportamento dafunção entendo o próximo exemplo.Add (add 2 3) 5 ⇒ 10O exemplo apresentado acima épraticamente auto-explicável, pois ao lermos eleenten<strong>de</strong>mos que "A função add recebe doisargumentos um é uma função e o outro um valorsendo que este já se encontra na sua forma normal,então basta ser feita a resolução do primeiroargumento sendo que este <strong>de</strong>ver retornar um valor eé isto que irá acontecer, sendo assim o próximopasso é a resolução da expressão". Repare que se oprimeiro argumento retorna-se um caracter ‘a’ porexemplo este erro seria encontrado, mas somenteem tempo <strong>de</strong> execução não <strong>de</strong> compilação.AplicaçõesSegue ainda uma listagem das áreas on<strong>de</strong>tem-se sido <strong>de</strong>senvolvido software utilizando alinguagem já referida.Fran (animation)Haskore (music)CGI programming in <strong>Haskell</strong>Happy (Parser generator)Derive (Automatic <strong>de</strong>rivation of classes from data<strong>de</strong>clarations)Tk Gofer (the Tk GUI library ported to Gofer, alanguage very similar to <strong>Haskell</strong>).ConclusãoConcluímos após um ano <strong>de</strong> estudo que<strong>Haskell</strong> além dos inúmeros recursos que trazembutido consigo e dos <strong>de</strong>mais que oferece,consegue hoje um crescimento extraordinário nomundo científico, sendo esta hoje a linguagemfuncional mais ascen<strong>de</strong>nte do momento, apesar <strong>de</strong>não ser a mais utilizada ainda.Foi <strong>de</strong>scoberto também através <strong>de</strong>ste estudoque um dos gran<strong>de</strong>s anseios da população da área <strong>de</strong>informática atualmente a portabilida<strong>de</strong>, é muito bemproporcionada pela linguagem pois esta trabalha emdiversos tipos <strong>de</strong> arquiteturas e sistemasoperacionais. Interpretadores ou compiladores<strong>Haskell</strong> "rodam" em quase todo hardware ousistema operacional existente hoje.Deduz-se também que o estudo <strong>de</strong> outrasáreas, afins é claro, torna-se necessário para umamaior compreensão <strong>de</strong> alguns problemas, e <strong>de</strong>ntreestas áreas po<strong>de</strong>mos citar a indução matemática,sendo que esta é <strong>de</strong> extrema importância não só parao aprendizado do <strong>Haskell</strong> mas em diversas outrasáreas. Esta afirmação é feita após a <strong>de</strong>scoberta <strong>de</strong>que existem estruturas na informática que possuemuma resolução extremamente elegante através daindução, entre eles estão árvores, listas, strings, e omais clássico <strong>de</strong>les o das Torres <strong>de</strong> Hannoi.Mais uma dica para quem quiser apren<strong>de</strong>resta nova linguagem é utilizar o Hugs uminterpretador pequeno e <strong>de</strong> gran<strong>de</strong> portabilida<strong>de</strong>.Este interpretador é um excelente veículo paraapren<strong>de</strong>r se apren<strong>de</strong>r <strong>Haskell</strong>.Nota Bibliográfica[HUD 97] HUDAK, Paul e PETERSON, John. AGentle Intoduction to <strong>Haskell</strong>. Los AlamosNational Laboratory, 1997.[SCH 92] SCHINEIDER, Gerardo. Uso <strong>de</strong> laInducción para el Diseño <strong>de</strong> Algoritmos. UTN.,Facultad Regional Concepión <strong>de</strong>l Uruguay,Argentina. 1992.