addIndex :: [Word a s] -> [Word (IndexedP (a, ())) s]
addIndex = fmap arrange . zip (fmap Index [0..])
  where
    arrange (i, Word a s) = Word (i, (a, ())) s
addIndex :: [Word a s] -> [Word (IndexedP (a, ())) s]
addIndex = fmap arrange . zip (fmap Index [0..])
  where
    arrange (i, Word a s) = Word (i, (a, ())) s
addIndex = fmap arrange . zip (fmap Index [0..])
  where
    arrange (i, Word a s) = Word (i, (a, ())) s