sequence expressions in Mint

A sequence expression, in Mint, is how you chain operations returning success or failure.

Here are some takeaways that I didn’t get from the documentation the first time around:

The body of a sequence is the happy path

It’s not explicitly stated, but the main body of a sequence is the “happy” path through the code, i.e. all operations succeed. Thus the left-hand-side values in the assignments in your sequence aren’t the actual error types—they’re the unwrapped “success” values.

Errors land you in one of the catch blocks below, somewhat like an exception handler.

Don’t use empty catch blocks

So how do you verify that you’re catching all the right errors? The compiler will tell you, if you let it. Avoid the temptation to use an empty catch block, and start with none. Then, add catch blocks one at a time until you’ve cleared the compiler errors.

Wrap arbitrary error types in Result

A sequence knows how to unwrap values from a Promise or a Result, and that’s it. But there are library functions that return something like a Maybe, or a String, to signal an error—for example, Json.parse.

To use these functions in a sequence, you’ll need to wrap their return types in a Result, using functions such as Maybe.toResult.