I love building those ultra-compressed and versatile for-loop constructs. You can put in everything you want in those three expression as long as you can make an expression for it. You don't even need to use a following code, it's totally open to your own code. Though I love the possibility, I'd never use it explicitely in production code. In a macro with proved-to-work code, I would not say no if it's faster to type and with no disadvantage in speed. But often I use simple expression for such thing, like when calling an iteration function or so. For my list item macros, I did now found out a greate how to simply do some filtering or moving of entries where a condition and the moment they get checked. Thus I will, depending on macro used, still have an iteration through all items and removal for specific ones. I can also use it clean single lists up and so on. I'm confident that this will be a great way using my list macros. You can't do such great things inline functions - another reason how macros can make programming easier and more rich, if you got the disciple to use them properly for sure.