: subtail ( seq n -- seq ) short tail ; : subtail* ( seq n -- seq ) short tail* ; : unclip-nlast ( seq n -- seq seq ) 2dup subtail* [ subtail ] dip ; : apply-rules ( seq -- seq ? ) { { [ dup 2 unclip-nlast { right left } = ] [ nip { left right } append t ] } [ f ] } cond ;