I started writing UltiSnips in a time where i did lots of functional programming. That shows in some places. Since then I learned through my dayjob that this is not a good approach in a procedural language for many reasons (one is that others will have a harder time thinking about recursion than iteration). Thanks for changing it :)