Error Rail
The error rail isn't great, people get confused and it doesn't really do what we want.
Result.map and Option.map, etc, shouldn't go to the error rail
What if we replaced it by something from another language (eg Rust/coffeescript's ?
or F#'s let!
(which is bind).
let!
In F#:
let! x = 5 / 6
let! y = x + 2
return y + 1
Desugars into
Bind(5 / 6, fun x ->
Bind(x + 2, fun y ->
(y + 1)
Perhaps that's a better approach. It would imply needing a Bindable Trait or similar. See https://fsharpforfunandprofit.com/posts/computation-expressions-bind