Don't (typed) Union types work better for errors(with pattern matching)
In haskell I think a nullable type or possibly error type frequently returned from functions which can error
ie. data Maybe a = Nothing | Just a data Either a b = Left a | Right b instead of (err,result) like in go