traverseFuture<B> method

Future<IList<B>> traverseFuture<B>(
  1. Future<B> f(
    1. A a
    )
)

Implementation

Future<IList<B>> traverseFuture<B>(Future<B> f(A a)) {
  Future<IList<B>> result = new Future.microtask(nil);
  var current = this;
  while(current._isCons()) {
    final gb = f(current._unsafeHead());
    result = result.then((a) => gb.then((h) => new Cons(h, a)));
    current = current._unsafeTail();
  }
  return result.then((l) => l.reverse());
}