O Haskell tem ainda uma forma construir expressões que permite fazer análise de casos sobre a estrutura dos valores de um tipo. Essas expressões têm a forma:

<aside> 💡 case expressão of padrão -> expressãopadrão -> expressão

</aside>

Exemplos :

soma3 :: [Int] -> Int
soma3 l = **case** l **of**
						(x:y:z:t) -> x+y+z
						(x:y:t)   -> x+y
						(x:t)     -> x
						[]        -> 0
null :: [a] -> Bool
null l = **case** l **of**
					[]     -> True
					(x:xs) -> False