Использование case
:
let var = Bar 42 in
case var of
Foo _ -> putStrLn "It's a Foo!"
Bar _ -> putStrLn "It's a Bar!"
Эти _
можно заменить на имя переменной, чтобы связать содержащийся Int
.
Вы также можете использовать шаблонопределение соответствия (которое встречается чаще, чем case
):
tellMeIt :: MyAlgebraicType -> IO ()
tellMeIt (Foo _) = putStrLn "It's a Foo!"
tellMeIt (Bar _) = putStrLn "It's a Bar!"