I was going to say this too, but I noticed there were complex quotations passed to `filter-index'`.  A lot of currying with `with` and parameters in a particular order.  So, it seemed tricky at first.  But, of course, totally workable:

```factor
! Desired order of arguments:
IN: scratchpad  "a" "b" { 1 2 3 } [ 3array . t ] with with filter-index' .
{ "a" "b" 0 }
{ "a" "b" 1 }
{ "a" "b" 2 }
{ 1 2 3 }
! Using filter-index, we see a simple nip at the front won't do:
IN: scratchpad  "a" "b" { 1 2 3 } [ 4array . t ] with with filter-index .
{ 1 "a" "b" 0 }
{ 2 "a" "b" 1 }
{ 3 "a" "b" 2 }
{ 1 2 3 }
IN: scratchpad  "a" "b" { 1 2 3 } [ nip 3array . t ] with with filter-index .
{ 1 "a" 0 }
{ 2 "a" 1 }
{ 3 "a" 2 }
{ 1 2 3 }
! Maybe fry quotations will help?  Not quite:
IN: scratchpad { 1 2 3 } "a" "b" '[ nip _ _ 3array . t ] filter-index .
{ 0 "a" "b" }
{ 1 "a" "b" }
{ 2 "a" "b" }
{ 1 2 3 }
! Looks like nip needs to go last, as long as the "main" word has the stack effect ( a b index -- ? )
IN: scratchpad  "a" "b" { 1 2 3 } [ 3array nip . t ] with with filter-index .
{ "a" "b" 0 }
{ "a" "b" 1 }
{ "a" "b" 2 }
{ 1 2 3 }
! Maybe it's clearer to just use locals:
IN: scratchpad :: foo ( a b seq -- ) seq [| elt index | a b index 3array . t ] filter-index . ;
IN: scratchpad "a" "b" { 1 2 3 } foo
{ "a" "b" 0 }
{ "a" "b" 1 }
{ "a" "b" 2 }
{ 1 2 3 }
```