In concatenative languages, any subexpression can be replaced with a name that represents the same subexpression.
Reserving operations in Shirka remove this property:
42 -> x x <- x -- works
42 -> x [ x <- x ] ! -- cannot undefine x
1 -> x 2 -> x <- x -- result is 2
1 -> x [ 2 -> x ] <- x -- result is 1
Be careful when factoring!