Nice Blank Moment While Killing GET-PATH!/SET-PATH!

I'm busily killing off all the stray SET-PATH! and GET-PATH! that exist... (because CHAIN! is going to be underneath PATH!, you won't be able to put a path in a chain such that you would describe the path as being set or gotten... the colon can't be "applied to" the path).

I came across the pleasing SIGIL! test:

for-each [sigil items] [
    ~null~  [  word    tu.p.le    pa/th    [bl o ck]    (gr o up)  ]
    ::      [  word:   tu.p.le:   pa/th:   [bl o ck]:   (gr o up): ]
    :       [ :word   :tu.p.le   :pa/th   :[bl o ck]   :(gr o up)  ]
    ^       [ ^word   ^tu.p.le   ^pa/th   ^[bl o ck]   ^(gr o up)  ]
    &       [ &word   &tu.p.le   &pa/th   &[bl o ck]   &(gr o up)  ]
    @       [ @word   @tu.p.le   @pa/th   @[bl o ck]   @(gr o up)  ]
    $       [ $word   $tu.p.le   $pa/th   $[bl o ck]   $(gr o up)  ]
    '       [ 'word   'tu.p.le   'pa/th   '[bl o ck]   '(gr o up)  ]
    ~~      [ ~word~  ~tu.p.le~  ~pa/th~  ~[bl o ck]~  ~(gr o up)~ ]
][
    for-each item items [
        assert [any [quoted? item, quasi? item, bindable? item]]
        if (degrade sigil) <> sigil of item [
            fail [mold item]
        ]
    ]
]

: and :: are not going to be SIGIL! at all soon. But as a first step, I need to get rid of SET-PATH! and GET-PATH!

Behold Just A Little Nice Rebolish Moment

I realized I needed to kill QUASI-TUPLE! and QUASI-PATH! also...

for-each [sigil items] [
    ~null~  [  word    tu.p.le    pa/th    [bl o ck]    (gr o up)  ]
    ::      [  word:   tu.p.le:     _      [bl o ck]:   (gr o up): ]
    :       [ :word   :tu.p.le      _     :[bl o ck]   :(gr o up)  ]
    ^       [ ^word   ^tu.p.le   ^pa/th   ^[bl o ck]   ^(gr o up)  ]
    &       [ &word   &tu.p.le   &pa/th   &[bl o ck]   &(gr o up)  ]
    @       [ @word   @tu.p.le   @pa/th   @[bl o ck]   @(gr o up)  ]
    $       [ $word   $tu.p.le   $pa/th   $[bl o ck]   $(gr o up)  ]
    '       [ 'word   'tu.p.le   'pa/th   '[bl o ck]   '(gr o up)  ]
    ~~      [ ~word~      _         _     ~[bl o ck]~  ~(gr o up)~ ]
][
    for-each item items [
        if blank? item [continue]
        assert [any [quoted? item, quasi? item, bindable? item]]
        if (degrade sigil) <> sigil of item [
            fail [mold item]
        ]
    ]
]

When you have the parts, you just use them...

Of course I could have used other things.


    ::      [  word:   tu.p.le:     ~    [bl o ck]:   (gr o up): ]

    ::      [  word:   tu.p.le:     #    [bl o ck]:   (gr o up): ]

    ::      [  word:   tu.p.le:    !!!   [bl o ck]:   (gr o up): ]

    ::      [  word:   tu.p.le:  <dead>  [bl o ck]:   (gr o up): ]

    ::      [  word:   tu.p.le:  ~null~  [bl o ck]:   (gr o up): ]

    ::      [  word:   tu.p.le:   #dead  [bl o ck]:   (gr o up): ]

It would be nice to have ~dead~, but I have spoken about reserving WORD! quasi/antiforms.

(Maybe that could be relaxed, to where quasiforms are allowed for all WORD! but antiforms only for those endorsed by the system? It might make sense. You can dialect with ~null~ the quasiform all you like without having that mean anything to do with the behavior of null, so you could do that with any other quasiform word of the future... might as well let you make them, right? But QUASI-TUPLE! and QUASI-PATH! don't get that allowance, so ~/foo can be a PATH!)

In a lot of cases, trash (~) would be the right choice for a "this is invalid slot".

But here, we've got quasiforms in the mix as part of the discussion. It favors picking blank as out of band. And it gets out of the way a little more.

Note That :pa/th and pa/th: Will Become LOADable Again...

You just won't ask about colons applied on the head or tail of the paths, because you'll have to "dig" to find the chains underneath.