5 paradigma funcional usando haskell

13
Paradigmas de Linguagens de Programação Prof. Péricles Miranda

Transcript of 5 paradigma funcional usando haskell

Page 1: 5 paradigma funcional usando haskell

Paradigmas de Linguagens de Programação

Prof. Péricles Miranda

Page 2: 5 paradigma funcional usando haskell

Paradigma Funcional usando Haskell

Page 3: 5 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.

Page 4: 5 paradigma funcional usando haskell

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

Page 5: 5 paradigma funcional usando haskell

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.

Page 6: 5 paradigma funcional usando haskell

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

Page 7: 5 paradigma funcional usando haskell

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

Page 8: 5 paradigma funcional usando haskell

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.

Page 9: 5 paradigma funcional usando haskell

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.

Page 10: 5 paradigma funcional usando haskell

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’?

Page 11: 5 paradigma funcional usando haskell

Vamos Praticar?

Page 12: 5 paradigma funcional usando haskell

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.

Page 13: 5 paradigma funcional usando haskell

Paradigmas de Linguagens de Programação

Prof. Péricles Miranda