Haskell не имеет нулевых ссылок, но это не значит, что вы не можете смоделировать наличие или отсутствие значений. Для этого обычно используется тип Maybe
с конструкторами данных Just
для значений и Nothing
вместо нуля.
Вы можете написать свою функцию следующим образом:
test (a,b) = if a > 10 then Just a else Nothing
Вот как с ним взаимодействовать:
Prelude> test (11, "foo")
Just 11
Prelude> test (10, "foo")
Nothing
Тип функции:
test :: (Ord a, Num a) => (a, b) -> Maybe a
Она подчиняется правилу, что и ветвь then
и else
возвращают значение того же типа - в данном случае тип Maybe a
.