1 / 16

Linguagens Funcionais: Haskell Prática 1

Linguagens Funcionais: Haskell Prática 1. Paradigmas de Linguagens Computacionais Monitor: Guilherme Moura gsm@cin.ufpe.br. Hugs. Interpretador de Haskell 98 Suporta todos os recursos da linguagem (exceção: módulos )

tammy
Download Presentation

Linguagens Funcionais: Haskell Prática 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Linguagens Funcionais: HaskellPrática 1 Paradigmas de Linguagens Computacionais Monitor: Guilherme Moura gsm@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)

More Related