terça-feira, 19 de abril de 2011

Desafio 14/04

Escrever a descrição de map usando o mecanismo de recursão do Haskell.



f x = x^2;
map2 f [] = [];
map2 f (x:xs) = f x : (map2 f xs);



Main> map2 f [2,3,4]
[4,9,16]

quinta-feira, 7 de abril de 2011

O desafio da aula de hoje (07/04) foi implementar um programa em haskell que ordene uma lista com determinadas palavras ou numeros.

Segue a baixo o programa implementado em sala com algumas modificacoes:

ordena (x:xs)
  | (x:xs) == [] || xs == [] = (x:xs)
  | x <= head (ordena xs) = (x:xs)
  | x > head (ordena xs) = head (ordena xs) : ordena (x : tail (ordena xs) )

Bug encontrado:

Main> ordena ["ca","bb","aa","dd"]
["aa","bb","ca","dd"]
Main> ordena [5,4,3,2,1]
[1,2,3,4,5]
Main> ordena [1,3,3,2,5,4]
[1,3,3,2,5,4]
Main> ordena [1,3,2,5,4]
[1,3,2,5,4]
Main> ordena [1,3,2,5,4,0]
[0,1,2,3,4,5]

Como podem perceber as vezes ele funciona e as vezes n!

A entrada 1,3,2,5,4 nao funciona mas qndo eu adiciono um 0 no final dela a ordenacao n apresenta erros.. Vou procurar o motivo do bug para informa-los aqui.. se alguem souber e puder me ajudar favor deixar comentarios!