Description
This story tracks back to the first release of F# where the function Async.Catch
was added, using the type on the left for the "right" value.
This in a type system with HKT support is the wrong decision, as we're interested in currying types, then we want to have the good value on the rightmost position.
Now, in F# land we don't have real HKTs so that's not a technical restriction, just theorotical at the moment.
So, people started adopting it, then the new Result
type landed in F# and guess what? They did it again. Left type for the right type.
Now, people is asking for some Result
functions added to F# core. This is when the problem becomes a real problem, because here we're not talking about types, we're talking about actual values.
For values, it's fair to think that's also convenient to curry on the good one. See this comment from @kspeakman fsharp/fslang-suggestions#526 (comment)
Now the problem is we still don't know what would be the standard for F# it's probably a bit early. Here in F#+ we did the either
function with the error on the right, we can change it in V2 but now we're about to ship bifoldables, so the question is do we want to swap the functions? If the answer is yes, we can still do it for v1.1 but not later.