apply the function, pass the return value to the function again, multiple rounds

I have a list of symbols, say AB`C. I have a table tab0; A function that takes in a table plus a string as arguments.

tab1: f[tab0;`A] tab2: f[tab1;`B] tab3: f[tab2;`C]

I only care about the final values. But my list of symbols can be long and can have variable length, so I don’t want to hardcode above. How do I achieve it?

I think it has something to do with https://code.kx.com/q/ref/accumulators/ but I really struggle to figure out the syntax.

You can so this using over 

q)tab:( A:1 2 3;B:4 5 6;C:7 8 9) // Sample table q)tab A B C ----- 1 4 7 2 5 8 3 6 9 q)func:{![x;();0b;enlist[y]!enlist (+;y;1)]} //Function I want to run q)func[tab;A] // Same as: update A:A+1 from tab A B C ----- 2 4 7 3 5 8 4 6 9 q)func over enlist[tab],ABC // Using over accumulator A B C ------ 2 5 8 3 6 9 4 7 10