Remix.run Logo
mike_hock 3 hours ago

Yeah, or just let the exceptions bubble up and the boilerplate goes away.

middayc 2 hours ago | parent [-]

But sometimes you must act on exceptional situations, recover, take alternative route, provide default, or translate exception from lower level one to a higher level one. From cause based to more intent based. Err, file not found setup.txt -> Couldn't read your setup -> ...

Which its great if this also doesn't loose lower level information, but just wraps it, so end user could dig into the error.

mike_hock 2 hours ago | parent [-]

> But sometimes you must act on exceptional situations, recover, take alternative route, provide default

And then the Rye version is presumably just as verbose.

> or translate exception from lower level one to a higher level one

This is the actual flaw in exception-based languages. Adding context should be much more convenient.

middayc 2 hours ago | parent [-]

Then the rye code "needs more meat" too yes, but not that much changes, |fix { code } already does the fixing and provides an alternative, |^check { failure construct dialect }, already wraps received failure into a new one you construct, and exits to caller. There are other such functions but these two are most common.

Additional benefit I see, they already express intent. Like map, filter, reduce express intent better than foreach loop.