Task<Result<'leftOk, 'error>> -> Task<Result<'rightOk, 'error>> -> Task<Result<'leftOk * 'rightOk, 'error>>
let result = TaskResult.zip (TaskResult.ok 1) (TaskResult.ok 2)
// task { Ok (1, 2) }
let result = TaskResult.zip (TaskResult.ok 1) (TaskResult.error "Bad")
// task { Error "Bad" }
let result = TaskResult.zip (TaskResult.error "Bad1") (TaskResult.error "Bad2")
// task { Error "Bad1" }