With the advent of CHAIN!s in the Big Alien Proposal For Function Calls, we have a way to push the /BLAME argument to be in front of the error...instead of behind it.
Let's say we use CHAIN! like this:
my-api: func [x y z] [
if true [
if y < 100 [
fail:$y ["Value must be >= 100, not" y]
]
]
]
This is all speculative in terms of exactly how the function would blend its refinement processing with dialecting the CHAIN! it was invoked with. But using fail:$y
instead of fail:y
pushes the variable out of band of other refinements that might be used... e.g. you know it's not trying to use a refinement named "y"
I actually think it looks better than fail $y [...]
. Or rather, coheres better. It makes more sense when you look at it, I think. It's the same number of characters, but it makes it pretty clear that the 1st argument to the FAIL is consistently the error specification. It's in the right slot.