A small thought for now:
a: 'a b: 'b c: 'c
; for infinite reduction of 'a 'b and 'c
block: [a b c [a b c]]
reduce block
=> [a b c [a b c]]
; ok
find block spread pick block 4
=> [a b c [a b c]]
; ok
spread pick block 4
=> \~[a b c]~\ ; antiform (splice!)
reduce block
=> [a b c a b c]
; ??
Does SPREAD here apply the isotope to that value in place or does it create something new? I kind of suspect the latter, but is it reasonable to expect the above behaviour?
It creates something new.
It's reasonable to ask if it works that way. But it does not. 
The quoting level of a BLOCK! (or any other value) lives in its cell, not in the series pointed to that contains the contents. It's a property like whether a slot in a block has the NEW-LINE flag.
Remember that the same underlying array storage can be imaged multiple times:
>> block: [a b]
>> four: reduce [block, quote block, quote quote block, quasi block]
== [[a b] '[a b] ''[a b] ~[a b]~]
>> append block 'c
>> four
== [[a b c] '[a b c] ''[a b c] ~[a b c]~]
The quoting (and/or quasi) level lives resident in the bits of FOUR's array holding the cells. The cells point at the array storage for BLOCK.
The only way to change the quoting levels is to manipulate the actual contents of FOUR. You can't do it by modifying the BLOCK variable to change its quote level--that's only relevant to the cell stored in the context where block's value is looked up:
>> block: spread block
== \~[a b c]~\ ; antiform (splice!)
>> four
== [[a b c] '[a b c] ''[a b c] ~[a b c]~] ; unchanged
Hence there's no means to subversively create the situation of an antiform inside a block remotely. You have to go through a function like CHANGE. They can spread the values, or error, or have some other reaction--but they'll never be allowed to put the isotope in the block.
2 Likes