I don’t think maybe or either are the most intuitive names for non-Haskellers. I call your either one result in my projects.
@type result(x, a) :: {:ok, a} | {:error, x} when a: term(), x: term()
By the way, Dialyzer doesn’t unify type variables so that signature is functionally no different from
@type result(x, a) :: {:ok, a} | {:error, a} when a: term()
Or the more idiomatic
@type result(x, a) :: {:ok, term()} | {:error, term()}
Exceptional calls it a TaggedStatus but doesn’t define a @type for it that I could find.






















