How To Indicate "Divergence" in Function RETURN: Spec

We have a new conundrum... in that I no longer think that [~foo~] means "antiform of foo" in function specs.

I said that the introduction of CHAIN!s and arbitrary SIGIL!s meant we'd be needing more destructuring. Well, that's coming in the types:

  • [~word!~] would match a quasiform word!
  • ['word!] would match a quoted word
  • [@block!] would match a pinned block
  • [word!:] will match a "set-word-like CHAIN!"
  • [integer!.integer!.integer!] will match a TUPLE of 3 integers, e.g. 1.2.3

As exciting as all that is...it's also moving toward some literalism, where [_] would match space (what was blank), [$ ^ @] would match tie/lift/pin, etc. etc. (Tags still aren't literal, they're parameter options, and I don't know what other things would be literal.)

The importance of all this threatens my beloved return: [~] for "return trash". It would be "return quasar" e.g. quasiform space.

So the only thing more coveted in lexical space than return: [~] here would be to take return: [] for "returns trash", e.g. nothing interesting to return.

So... Divergence With Something Not-A-Block?

return: <!> looks pretty good for divergence (although maybe a bit too alarming, as if that should be a shorthand for returns ERROR!...) :thinking:

But Of Course This Breaks The Nice Property

That property may be too good to lose.

Maybe it's the returning trash shorthand that should move out of the way? Maybe even lighter:

return: ~

If you say that, then what your actual return spec is becomes return: [trash!]