Can someone explain the syntax process for two the functions , how will the implementation and the sequence for the dart code snippet below be?

I am a beginner trying to understand few coding problems to use them as base for my learning. In the snippet below there are two functions at a time. How will the implementation and the sequence for the dart code snippet below be?

List<int> forAll(Function f, List<int> intList){ 
    var newList = List<int>(); 
    for(var i = 0; i < intList.length; i ++){ 
      newList.add(f(intList[i]));
    } 
    return newList; 
} 

// Recursive factorial function 
int factorial(int x) { 
  if (x == 1) { 
    return 1; 
 } else { 
   return x*factorial(x-1); 
 } 
} 

main() { 
  var tester = [1,2,3]; 
  var result = forAll(factorial, tester); 
  print(tester); 
  print(result); 
}


Output

[1, 2, 3]

[1, 2, 6]