List<T> indexedMap<S, T>(List<S> l, MapFunc<S, T> mapFunc) { List<T> ret = []; for (int i = 0; i < l.length; i++) { ret.add(mapFunc(i, l[i])); } return ret; }