5 paradigma funcional usando haskell
Upcoming SlideShare
Loading in...5
×
 

5 paradigma funcional usando haskell

on

  • 1,139 views

 

Statistics

Views

Total Views
1,139
Views on SlideShare
1,139
Embed Views
0

Actions

Likes
1
Downloads
13
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

5 paradigma funcional usando haskell 5 paradigma funcional usando haskell Presentation Transcript

  • Paradigmas de Linguagens de Programação
    Prof. Péricles Miranda
  • Paradigma Funcional usando Haskell
  • Linguagem Haskell
    LinguagemFuncionalPura
    Implementações:
    GHC:
    Compilador;
    Utilização similar à compiladores de outraslinguagens.
    HUGS:
    Interpretada, facilita a aprendizagem;
    O programadorforneceaointerpretadorumaexpressão e estemostra o resultadodasuaavaliação.
  • Tipos da Linguagem Haskell
    TiposPrimitivos (Similares a Java):
    Int: Inteiro de 32 bits
    +, -, *, mod, div, ^;
    Integer: Inteirosemlimitação de tamanho
    Float
    +, -, *, /, ^;
    Char
  • Observação
    Em Haskell todosostiposcomeçam com letraMAIÚSCULA
    Todososnomesiniciados com letraminúsculassãonomes de funções.
  • Tipo Função
    Umafunçãocalcula um resultado a partir de um argumento:
    Porser umalinguagemfuncionalpura, em Haskell o resultadoproduzidoporumafunçãovariaapenasemfunçãovalores dos seusargumentos.
    Sintaxe:
    X -> Y
    Funçãoquerecebe um valor do tipo X e produz um valor do tipoY
    X -> Y -> Z
    Funçãoquerecebeargumentos dos tipos X e Y e produz um valor do tipo Z.
    Chamada de função:
    f x
    f x y
  • Programa Haskell
    dois:: Int -- tipodadeclaracao
    dois = 2 -- valor dadeclaracao
    f :: Int -> Int
    f x = x + 1
    g :: Int -> Int -> Int
    g x y = x + 2*y
  • DeclaraçãoPolimórfica
    Motivação:
    Muitasfunçõesnãodependem de seustiposparaseremdefinidas.
    Exemplo:
    -- Funcaosegundovalor
    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çãodamesmafunçãoparaparadiferentestiposgeramuitaredundância de código.
  • Declaração Polimórfica
    Tipopolimórfico: Tipoquepode ser substituídoporqualqueroutrotipodalinguagem.
    Representadoporletrasminúsculas.
    Exemplo:
    seg :: a -> a -> a
    seg x y = y
    O tipopolimórfico “a” podesignificarqualquertipo real nalinguagem.
  • InferênciaAutomática de Tipos
    O programador Haskell não tem de definirostipos de todas as funçõesde um programa.
    Se elenãoespecificar o tipo de umafunção, o compilador/interpretadortentará “adivinhar” o tipo a partirdaanálise do corpo de declaração.
    Exemplo:
    f :: Int -> Int
    f x = x * 2
    n x y = (f x) + (f y)
    Qual a assinaturadafunção ‘n’?
  • VamosPraticar?
  • Exercícios
    Implementar operações básicas entre dois números (+, -, /, *);
    Implementar a média entre 4 números;
    Implementar programa para dizer se número é par;
    Implementar programa para dizer se número é ímpar;
    Implementar programa para encontrar o maior entre 3 números;
    Implementar programa para encontrar o menor entre 3 números;
    Para cada exercício acima, mostre o tipo das funções.
  • Paradigmas de Linguagens de Programação
    Prof. Péricles Miranda