26
Haskell Centro de Informática – UFPE

Haskell

  • Upload
    yagil

  • View
    59

  • Download
    0

Embed Size (px)

DESCRIPTION

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. Paradigma. Totalmente baseado em funções - PowerPoint PPT Presentation

Citation preview

Page 1: Haskell

Haskell

Centro de Informática – UFPE

Page 2: Haskell

Roteiro

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

Page 3: Haskell

História

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

Page 4: Haskell

Paradigma

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

Page 5: Haskell

Utilização

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

proposicional)

Page 6: Haskell

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

Sintaxe

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

Page 8: Haskell

Sintaxe( Tipos Básicos )

VoidTuplasListasFunções

Page 9: Haskell

Sintaxe

Módulos

module Main where

main = putStrLn “Hello, World!”

Page 10: Haskell

Sintaxe

Funções

multiplica x y = x*y

Page 11: Haskell

Sintaxe

Listas

["Bob", "John"]

"Bob" : "John" : []

Page 12: Haskell

Sintaxe

:: (dois-pontos duplo)

5 :: Integer

'a‘ :: Char

Inc :: Integer -> Integer

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

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

Page 13: Haskell

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

Sintaxe

Recursão (simulação de loops)

printAll :: [String] -> IO ()

printAll [] = return ()

printAll (x:xs) = do putStrLn x

printAll xs

Page 15: Haskell

Sintaxe

Operador $

greet name = putStrLn $ greeting name

Page 16: Haskell

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

Sintaxe

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

Page 18: Haskell

Implementação

Hugs GHC Nhc98 HBC Helium Jhc Yhc

Page 19: Haskell

Implementação

Hugs InterpretadorEscrito em CPortávelLeve Ideal para iniciantes

Page 20: Haskell

Implementação

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

Page 21: Haskell

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

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

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

Desvantagens

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

Page 25: Haskell

Dúvidas

Page 26: Haskell

Haskell

Centro de Informática - UFPE