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.