26
Haskell Centro de Informática – UFPE

Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Embed Size (px)

Citation preview

Page 1: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Haskell

Centro de Informática – UFPE

Page 2: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Roteiro

História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Page 3: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

História

Desenvolvida em 1990 pelo FPAC Haskell 1.0 - 1.4 Haskell 98 Report Haskell-prime

Page 4: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Paradigma

Totalmente baseado em funções Não existem atribuições (assignments) ! Lazy Evaluation High-order Functions

Page 5: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Utilização

Jogos Compiladores IA (Problemas algébricos e lógica

proposicional)

Page 6: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Sintaxe

Trabalha-se somente com funções, seus parâmetros e seus retornos

É case-sensitive Não possui comandos de repetição como

While e For Sem limites para identificadores

Page 7: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Sintaxe

Tipos BásicosBool(Booleano) Int(Inteiro limitado) Integer(Inteiro ilimitado)Float(Real)Char(Caractere)

Page 8: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Sintaxe( Tipos Básicos )

VoidTuplasListasFunções

Page 9: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Sintaxe

Módulos

module Main where

main = putStrLn “Hello, World!”

Page 10: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Sintaxe

Funções

multiplica x y = x*y

Page 11: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Sintaxe

Listas

["Bob", "John"]

"Bob" : "John" : []

Page 12: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Sintaxe

:: (dois-pontos duplo)

5 :: Integer

'a‘ :: Char

Inc :: Integer -> Integer

[1,2,3] :: [Integer]

('b',4) :: (Char,Integer)

Page 13: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Sintaxe

do

main = do putStr "You are? "

name <- getLine

greet name

Obs.: Utilização de layout (identação), substituindo os parênteses

Page 14: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Sintaxe

Recursão (simulação de loops)

printAll :: [String] -> IO ()

printAll [] = return ()

printAll (x:xs) = do putStrLn x

printAll xs

Page 15: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Sintaxe

Operador $

greet name = putStrLn $ greeting name

Page 16: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Sintaxe

If then else

greeting :: String -> String

greeting name =

if name = = "Haskell"

then "Hey, whadda ya know? This is a Haskell program!"

else "Hello, " ++ name ++ "!"

Page 17: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Sintaxe

OutroscaseSobrecarregamento (“Overloading”)ect, etc...

Page 18: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Implementação

Hugs GHC Nhc98 HBC Helium Jhc Yhc

Page 19: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Implementação

Hugs InterpretadorEscrito em CPortávelLeve Ideal para iniciantes

Page 20: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Implementação

GHC Interpretador e CompiladorEscrito em HaskellMenos portávelMais lentoExige mais memóriaProduz programas mais rápidos

Page 21: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Exemplos

module Main where main :: IO () main = do putStr “Qual é o seu nome? "

nome <- getLine cumprimento nome cumprimento :: String -> IO () cumprimento nome = putStrLn $

cumprimentar nome

Page 22: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Exemplos

cumprimentar :: String -> String cumprimentar nome = if nome == "Haskell" then “Opa, eu te conheço? Este é um

programa em Haskell!" else if nome == “Java" then “Boa linguagem" else “Olá, " ++ nome ++ "!"

Page 23: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Vantagens

Fortemente Tipada e Estática Avaliação Lazy Polimorfismo Universal Paramétrico Função (superior e parcial) Ausência de variáveis globais e desvios

incondicionais

Page 24: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Desvantagens

Avaliação Lazy Muita memória Execução lenta

Page 25: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Dúvidas

Page 26: Haskell Centro de Informática – UFPE. Roteiro História Paradigma Utilização Sintaxe Implementação Exemplos Vantagens & Desvantagens

Haskell

Centro de Informática - UFPE