*   This appears to be a bug:

        ECHO [ SUBST "a" "(.*)(b)(.*)" $3 ] ;
        a

    It looks like the behavior when there is no match is to return the original
    string. That's OK, I guess, but it makes it more difficult to determine
    whether there was a match:

        local normalized = [ SUBST $(input) "(.+)[/\\](.+)" $1/$2 ] ;
    
    did $(input) match the pattern? I need a separate test to find out. It seems
    more logical that this should produce the empty list, empty string, or
    simply "/" if input doesn't match.

    The behavior should be documented at least.

*      I'd like it if the result of this:

        ECHO [ SUBST "x/y" "(.*)(/)(.*)" $1 $2 $3 ] ;

      were:
      
        x / y

