Provide an iterator for List that iterates through elements and delimiters on pairs. This iterator is robust to missing elements.
For instance, in the following function call:
f(a b, , )
The iterator would emit the following elements and delimiters:
[("a", null), ("b", ","), (null, ","), (null, null) ]
This iterator abstracts out many corner cases when dealing with lists, thus providing a cleaner interface for mutation and traversal of Lists.
Note: This iterator has the memory footprint of one pointer.