Paradigma Funcional & Linguagem Haskell Introdução As linguagens de programação estão divididas em duas grandes classes: a imperativa e a declarativa. A imperativa – descreve a forma de obter os resultados “outputs” a partir das entradas “inputs”, nesta classe encontram-se algumas das mais conhecidas linguagens de programação (ex: C, Java, Pascal….). Introdução A declarativa – descreve a relação existente entre os “inputs” e os “outputs”, sem duvidar da forma como os outputs são obtidos. Paradigma Funcional Consiste em desenvolver funções que solucionam um determinado problema, tais funções obedecem aos princípios matemáticos, embora nem sempre podem ser consideradas funções totais. Nota: Uma função é total, quando todos os elementos de um conjunto A, tem seu representante em um conjunto B. Algumas Características As expressões informação; são a representação exacta da As expressões podem ser associadas a nomes; Todo o nome, que em uma expressão tem um valor único é imutável; Não permite efeito colateral em funções, a linguagem oferece transparência referencial. Vantagens Mais eficiente que as linguagens imperativas para calculo recursivo; Transparência referencial; Grande flexibilidade, capacidade de abstracção e modularização Desvantagens Ilegibilidade do código; Os programas podem ser menos eficientes; Principais linguagens Lisp Miranda ML Haskell Linguagem Haskell Haskell – é uma linguagem de programação funcional, de propósito geral e de computação retardada(Lazy evaluation). Nomeada em homenagem ao lógico Haskell Curry. Computação retardada – os programas em haskell são executados usando uma técnica chamada avaliação preguiçosa , que se baseia na ideia de que nenhum calculo deve ser realizado até que o seu resultado seja realmente necessário. Características da linguagem Haskell Haskell sendo uma linguagem funcional, centrarase no que se quer obter e não em como se obter o resultado. Este ênfase no que e não no como, aproxima a sintaxe das linguagens funcionais a sintaxe da linguagem natural (alto nível) , contrariamente a sintaxe das linguagens imperativas que se aproximam a sintaxe da linguagem de Baixo nível (linguagem da maquina). Características da linguagem Haskell Como as linguagens modernas, Haskell possui em gestor de memorias, libertando o programador dessa tarefa. Mesmo sendo uma linguagem típada, inclui um sistema de tipos poli mórficos, bem incorporados na linguagem, incrementando a reutilização do código. É uma linguagem funcional pura. Em determinada função produzirá sempre o mesmo resultado “output” se o valor introduzido “input” for igual. Bibliografia: Bento, Miguel; Coelho, Rui M. P. _Introdução a Programação em Haskell