Baixe o app para aproveitar ainda mais
Prévia do material em texto
* Haskell aula 08 Casamento de padrões Prof. Msc Aurélio Andrade de Menezes Júnior. * Casamento de padrões Analise o seguinte exemplo: f x y z | (x==7) = 10 f x y z | (y==8) = 20 f x y z | (z==9) = 30 | otherwise = 0 Sob uma notação com várias condicionais na mesma linha: g 7 y z = 10 g x 8 z = 20 g x y 9 = 30 g x y z | (x/=7) || (y/=8) || (z/=9) * Casamento de padrões A questão aqui é: como tornar estas linhas equivalentes, uma vez que as variáveis são independentes entre si ? Há uma variável conhecida como anônonima, a qual é simbolizada por ‘_’ (em inglês é chamado de underscore). Usando esta variável anônima o código anterior pode ser reescrito da seguinte maneira: h 7 _ _ = 10 H _ 8 _ = 20 H _ _ 9 = 30 H _ _ _ | = 0 * Casamento de padrões Assim, a função ativada e executada é aquela que se ajusta com um dos padrões no argumento, ma sem considerar o conteúdo quando o argumento for ‘_’. Os identificadores são vinculados aos valores identificados para avaliação no lado direito da equação. Os padrões permitidos são constantes tais como inteiros, valores booleanos, tuplas, nomes de parâmetros formais, etc. Os padrões não permitidos são expressões aritmétcas, relacionais ou lógicas.Os nomes de identificadores devem ser diferentes. * Casamento de padrões Exemplo: iguais :: Int -> Int -> Bool iguais x x = True iguais x y = False ERRO – variável repetida em padrão!!! -- solução: iguais :: Int -> Int -> Bool iguais x y = x==y = True iguais x y = False * Casamento de padrões Aqui um ‘_’ pode ser usado quando um valor não interessa para avaliação. Por exemplo, a definição do operador lógico ou (or): ou :: Bool -> Bool -> Bool ou False False = False ou _ _ = True * Dúvidas
Compartilhar