The Canonical List of Non-Negotiables

ATOMICITY OF ELEMENTS IN BLOCK!s AND GROUP!s

A new non-negotiable for Ren-C is that for any BLOCK! (or blocklike thing) the following property holds:

block2: copy []

for-each item block1 [append block2 item]

assert [block1 = block2]

Prior to isotopes, it wasn't conceivable that such rules could hold. But after years scaling a mountain of design... I concluded this could be achieved, if all the tricky behaviors came from values "at quoting level -1" that could not be put into blocks.

  • There are no isotopic actions to implicitly execute; you'd get an error trying to put them in the block.

  • There are no blocks/groups/paths that will splice into the target, because splicing requires an explicit conversion to an isotope.

  • There are no "unsets" to trip on that you can find in a block, because the state conveying "unsetness" (trash) is an isotope.

2 Likes