Ended up using function for the purpose of adding integer index filter.
Macro is actually not needed for this ...
Added some tests about passing functions to macro. So it seems the true
value of macro is to take the arguments in their un-evaluated literal
forms. Once these argments are taken, other work can mostly be delegated
to functions.