List reduce(List a, dynamic Function(dynamic, dynamic) f, dynamic init) { return a.fold(init, f).toList(); }