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

https://learninghub.kx.com/forums/topic/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],`A`B`C // Using over accumulator 
A B C 
------ 
2 5 8 
3 6 9 
4 7 10