run method

A run()

Implementation

A run() {
  _TBind? current = cast(_unsafeGetTBind());
  if (current == null) {
    return _unsafeGetTPure()!._a;
  }
  while(true) {
    final fa = current!._fa;
    final f = current._f;
    final fabind = fa._unsafeGetTBind();
    if (fabind != null) {
      final fa2 = fabind._fa;
      final f2 = fabind._f;
      current = new _TBind(cast(fa2), (a2) => new _TBind(f2(a2), f));
    } else {
      final res = f(cast(fa._unsafeGetTPure()!._a));
      current = res._unsafeGetTBind();
      if (current == null) {
        return cast(res._unsafeGetTPure()!._a);
      }
    }
  }
}