map2 : Try(a, err), Try(b, err), (a, b -> c) -> Try(c, err)
Combines two results by running a function on both Ok values. If either
is an Err, that Err is returned instead and the function is not run.
When both are Err, the first one wins.
expect Try.map2(Try.Ok(2.I64), Try.Ok(3), |a, b| a * b) == Ok(6)
expect {
err : Try(I64, Str)
err = Err("uh oh")
Try.map2(Try.Ok(2), err, |a, b| a * b) == Err("uh oh")
}