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ão … padrã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