Programação Funcional

Propaganda
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
Download