1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.
  2. Informação: A partir das 9:00 (8:00 nos Açores) deste Sábado, 15 de Dezembro, haverá um breve período de inacessibilidade ao fórum e restantes sites da ZWAME (Comparador, Jogos, Portal, etc).
    Se necessário faremos actualizações via Twitter e Facebook.
    Remover anúncio

Haskell

Discussão em 'Programação' iniciada por Paulerrimo, 7 de Novembro de 2012. (Respostas: 3; Visualizações: 874)

  1. verifica :: a -> [a] -> Bool
    verifica x (h:t) = elem x (h:t)


    Alguem me consegue dizer o que está mal nesta função?
    É suposto verificar se x pertence á lista...
     
  2. nfk

    nfk Power Member

    Se apagares a primeira linha deve funcionar. Depois corre, no ghci:

    Código:
    Prelude> :t verifica
    para veres a declaração que é inferida automaticamente.
     
  3. Ainda estou a aprender Haskell, mas talvez te possa ajudar.

    verifica :: Eq a => a -> [a] -> Bool

    Neste caso, como queres verificar se x é igual a algum elemento da lista, estás a comparar x com os elementos da lista, ou seja, a ver se são iguais ou diferentes. Por isso precisas da classe Eq, penso. :)
    De qualquer forma, tenta informar-te melhor e vê se desta forma está correto.

    "The Eq class defines equality (==) and inequality (/=)"
     
  4. Eu acho que a ideia do exercício é fazeres tu a função e não invocar a função que já te faz isso.

    verifica::Eq a=> a -> [a] -> Bool
    verifica _ [] = False
    verifica x (h:t) | x==h = True
    |otherwise = verifica x t
     

Partilhar esta Página