• Nenhum resultado encontrado

Linguagens Funcionais: Haskell Prática 1

N/A
N/A
Protected

Academic year: 2022

Share "Linguagens Funcionais: Haskell Prática 1"

Copied!
16
0
0

Texto

(1)

Linguagens Funcionais: Haskell Prática 1

Paradigmas de Linguagens Computacionais Hermano Perrelli

hermano@cin.ufpe.br

(2)

Hugs

• Interpretador de Haskell 98

• Suporta todos os recursos da linguagem (exceção: módulos)

• Para iniciá-lo, execute winhugs em

P:\Hugs98-Nov2002 ou hugs no terminal

• Hugs é gratuito. Você pode obtê-lo em

www.haskell.org/hugs.

(3)

Hugs: Comandos

:quit

Sai do Hugs

:?

Exibe a ajuda do Hugs

(4)

Hugs: Expressões

O Hugs pode computar o valor de expressões Haskell. Basta apenas digitá-las no console.

> 2+3 5

> head [3,2,1]

3

> tail [3,2,1]

[2,1]

(5)

Exercício 1: Expressões

Calcule o valor das seguintes expressões (no Hugs):

> sum [1,2,3,4]

> product [1,2,3,4]

> “abc” ++ “def”

> fst (2,3)

(6)

Hugs: Tipos

Toda expressão de Haskell tem

um tipo associado e o Hugs permite descobri-lo através do comando :type

> :t 2+3

2 + 3 :: Num a => a

> :t head [3,2,1]

head [3,2,1] :: Num a => a

> :t tail

tail :: [a] -> [a]

(7)

Exercício 2: Tipos

Encontre expressões cujos tipos são:

Char [Char]

(Int, Int)

(Bool, [Char]) [(Bool, Char)]

(8)

Exercício 3: Tipos

Encontre o tipo das seguintes expressões:

head sum fst elem flip

flip elem

(9)

Hugs: Arquivos

:load <arquivo>

Carrega o arquivo no Hugs

:reload

Recarrega o último arquivo

:cd <dir>

Modifica a pasta de trabalho

(10)

Exercício 4: Arquivos

Carregue o arquivo exercicio.hs e calcule as seguintes expressões:

square 2

allEqual 2 3 4 allEqual 1 1 1

allEqual (square 2) (square –2) 4 maxi (square 2) 3

(11)

Exercício 5: Arquivos

Modifique o arquivo exercicio.hs, incluindo as seguintes funções:

fat :: Int -> Int

Calcula n!

all4Equal :: Int -> Int -> Int -> Int -> Bool

Compara se quatro números são iguais

all4Equal :: Int -> Int -> Int -> Int -> Bool

Mesmo que anterior, mas usando a definição de allEqual

(12)

Exercício 6: Sales

Modifique o arquivo sales.hs, incluindo as seguintes funções:

maxSales :: Int -> Int

Dada uma semana n, retorna a semana com maior número de vendas entre 0 e n

totalSales :: Int -> Int

Dada uma semana n, retorna a soma das vendas entre as semanas 0 e n

(13)

Exercício 7: Sales

Modifique o arquivo sales.hs, incluindo as seguintes funções:

howManyWeeks

Dado um valor de vendas e uma semana n, determina quantas semanas entre 0 e n

tiveram essa vendagem (defina também seu tipo)

averageSales :: Int -> Float

Dada uma semana n, calcula a média de vendas entre 0 e n

(14)

Exercício 8: Strings

Defina as seguintes funções:

makeSpaces :: Int -> String

Produz uma String com n espaços vazios

pushRight :: Int -> String -> String

Adicionar n espaços a uma String (deve usar makeSpaces)

(15)

Exercício 9: Tipos

Defina os tipos Point e Triangle (a partir de

Point) e as funções distance (calcula a distância entre dois pontos), midPoint (calcula o ponto médio entre dois pontos) e perimeter (calcula o perímetro do triângulo)

(16)

Créditos

• Primeira versão desenvolvida por Rafael

Borges (rmb2@cin.ufpe.br)

Referências

Documentos relacionados

Nos termos da legislação em vigor, para que a mensagem de correio eletrônico tenha valor documental, isto é, para que possa ser aceito como documento original, é necessário existir

Assim tens mais tempo para tomar conta do Vencislau e das outras crianças. Já tiveste dez

Sabendo-se que existe uma crescente preocupação com os impactos do bruxismo na qualidade de vida de crianças, visto que este pode ser considerado um precursor

Assim, a produção no segmento chamado “dentro da porteira” fica mais especializada e, passa a ser orientada para o mercado o passar dos tempos ocorreram ajustes nos modos

devidamente assinadas, não sendo aceito, em hipótese alguma, inscrições após o Congresso Técnico; b) os atestados médicos dos alunos participantes; c) uma lista geral

Sendo assim, as empresas não só irão vender seus produtos, mas também criar relacionamentos concretos na procura de uma possível fidelização de seus consumidores (cf. O

Durante a consulta e a encomenda a aptitude à galvanização a quente assim como todas as outras exigências especí- ficas quanto à qualidade serão submeti- das ao acordo da

Como atividades do Projeto, são realizadas, quinzenalmente, reuniões (grupos de estudo) para atividades de ensino e pesquisa, em que são trabalhados os temas relativos