Programação Funcional 4a. Seção de Slides Tuplas e Definição de Funções Locais em Haskell.
5 paradigma funcional usando haskell
-
Upload
pericles-miranda -
Category
Documents
-
view
905 -
download
3
Transcript of 5 paradigma funcional usando haskell
Paradigmas de Linguagens de Programação
Prof. Péricles Miranda
Paradigma Funcional usando Haskell
Linguagem Haskell
• Linguagem Funcional Pura
• Implementações:
– GHC:• Compilador;
• Utilização similar à compiladores de outras linguagens.
– HUGS:• Interpretada, facilita a aprendizagem;
• O programador fornece ao interpretador uma expressão e estemostra o resultado da sua avaliação.
Tipos da Linguagem Haskell
• Tipos Primitivos (Similares a Java):
– Int: Inteiro de 32 bits
+, -, *, mod, div, ^;
– Integer: Inteiro sem limitação de tamanho
– Float
+, -, *, /, ^;
– Char
Observação
• Em Haskell todos os tipos começam com letraMAIÚSCULA
• Todos os nomes iniciados com letraminúsculas são nomes de funções.
Tipo Função
Uma função calcula um resultado a partir de um argumento:– Por ser uma linguagem funcional pura, em Haskell o resultado produzido por
uma função varia apenas em função valores dos seus argumentos.
• Sintaxe:
X -> Y– Função que recebe um valor do tipo X e produz um valor do tipo Y
X -> Y -> Z– Função que recebe argumentos dos tipos X e Y e produz um valor do
tipo Z.
• Chamada de função:f xf x y
Programa Haskell
dois :: Int -- tipo da declaracao
dois = 2 -- valor da declaracao
f :: Int -> Int
f x = x + 1
g :: Int -> Int -> Int
g x y = x + 2*y
Declaração Polimórfica
• Motivação:– Muitas funções não dependem de seus tipos para serem
definidas.
– Exemplo:-- Funcao segundo valor
segI :: Int -> Int -> Int
segI x y = y
segF :: Float -> Float -> Float
segF x y = y
segC :: Char -> Char -> Char
segC x y = y
– A definição da mesma função para para diferentes tiposgera muita redundância de código.
Declaração Polimórfica
• Tipo polimórfico: Tipo que pode ser substituídopor qualquer outro tipo da linguagem.– Representado por letras minúsculas.
• Exemplo:seg :: a -> a -> a
seg x y = y
• O tipo polimórfico “a” pode significar qualquertipo real na linguagem.
Inferência Automática de Tipos
• O programador Haskell não tem de definir os tipos de todas as funções de um programa.– Se ele não especificar o tipo de uma função, o compilador/interpretador
tentará “adivinhar” o tipo a partir da análise do corpo de declaração.
• Exemplo:f :: Int -> Int
f x = x * 2
n x y = (f x) + (f y)
Qual a assinatura da função ‘n’?
Vamos Praticar?
Exercícios
1) Implementar operações básicas entre dois números(+, -, /, *);
2) Implementar a média entre 4 números;
3) Implementar programa para dizer se número é par;
4) Implementar programa para dizer se número é ímpar;
5) Implementar programa para encontrar o maior entre3 números;
6) Implementar programa para encontrar o menor entre3 números;
7) Para cada exercício acima, mostre o tipo das funções.
Paradigmas de Linguagens de Programação
Prof. Péricles Miranda