| // Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| abstract class Either<L, R> { | |
| Either(); | |
| B fold<B>(B ifLeft(L l), B ifRight(R r)); | |
| static Either<L, U> map20< | |
| L, | |
| A, | |
| A2 extends A, | |
| B, | |
| B2 extends B, | |
| C, | |
| C2 extends C, | |
| D, | |
| D2 extends D, | |
| E, | |
| E2 extends E, | |
| F, | |
| F2 extends F, | |
| G, | |
| G2 extends G, | |
| H, | |
| H2 extends H, | |
| I, | |
| I2 extends I, | |
| J, | |
| J2 extends J, | |
| K, | |
| K2 extends K, | |
| LL, | |
| LL2 extends LL, | |
| M, | |
| M2 extends M, | |
| N, | |
| N2 extends N, | |
| O, | |
| O2 extends O, | |
| P, | |
| P2 extends P, | |
| Q, | |
| Q2 extends Q, | |
| R, | |
| R2 extends R, | |
| S, | |
| S2 extends S, | |
| T, | |
| T2 extends T, | |
| U | |
| >( | |
| Either<L, A2> fa, | |
| Either<L, B2> fb, | |
| Either<L, C2> fc, | |
| Either<L, D2> fd, | |
| Either<L, E2> fe, | |
| Either<L, F2> ff, | |
| Either<L, G2> fg, | |
| Either<L, H2> fh, | |
| Either<L, I2> fi, | |
| Either<L, J2> fj, | |
| Either<L, K2> fk, | |
| Either<L, LL> fl, | |
| Either<L, M> fm, | |
| Either<L, N> fn, | |
| Either<L, O> fo, | |
| Either<L, P> fp, | |
| Either<L, Q> fq, | |
| Either<L, R> fr, | |
| Either<L, S> fs, | |
| Either<L, T> ft, | |
| U fun( | |
| A a, | |
| B b, | |
| C c, | |
| D d, | |
| E e, | |
| F f, | |
| G g, | |
| H h, | |
| I i, | |
| J j, | |
| K k, | |
| LL l, | |
| M m, | |
| N n, | |
| O o, | |
| P p, | |
| Q q, | |
| R r, | |
| S s, | |
| T t, | |
| ), | |
| ) => fa.fold( | |
| left, | |
| (a) => fb.fold( | |
| left, | |
| (b) => fc.fold( | |
| left, | |
| (c) => fd.fold( | |
| left, | |
| (d) => fe.fold( | |
| left, | |
| (e) => ff.fold( | |
| left, | |
| (f) => fg.fold( | |
| left, | |
| (g) => fh.fold( | |
| left, | |
| (h) => fi.fold( | |
| left, | |
| (i) => fj.fold( | |
| left, | |
| (j) => fk.fold( | |
| left, | |
| (k) => fl.fold( | |
| left, | |
| (l) => fm.fold( | |
| left, | |
| (m) => fn.fold( | |
| left, | |
| (n) => fo.fold( | |
| left, | |
| (o) => fp.fold( | |
| left, | |
| (p) => fq.fold( | |
| left, | |
| (q) => fr.fold( | |
| left, | |
| (r) => fs.fold( | |
| left, | |
| (s) => ft.fold( | |
| left, | |
| (t) => right( | |
| fun( | |
| a, | |
| b, | |
| c, | |
| d, | |
| e, | |
| f, | |
| g, | |
| h, | |
| i, | |
| j, | |
| k, | |
| l, | |
| m, | |
| n, | |
| o, | |
| p, | |
| q, | |
| r, | |
| s, | |
| t, | |
| ), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ), | |
| ); | |
| } | |
| Either<L, R> left<L, R>(L l) => new Left(l); | |
| Either<L, R> right<L, R>(R r) => new Right(r); | |
| class Left<L, R> extends Either<L, R> { | |
| final L _l; | |
| B fold<B>(B ifLeft(L l), B ifRight(R r)) => ifLeft(_l); | |
| Left(this._l); | |
| } | |
| class Right<L, R> extends Either<L, R> { | |
| final R _r; | |
| B fold<B>(B ifLeft(L l), B ifRight(R r)) => ifRight(_r); | |
| Right(this._r); | |
| } | |
| void main() { | |
| Either.map20( | |
| left(0), | |
| left(1), | |
| left(2), | |
| left(3), | |
| left(4), | |
| left(5), | |
| left(6), | |
| left(7), | |
| left(8), | |
| left(9), | |
| left(10), | |
| left(11), | |
| left(12), | |
| left(13), | |
| left(14), | |
| left(15), | |
| left(16), | |
| left(17), | |
| left(18), | |
| left(19), | |
| (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) => 20, | |
| ); | |
| } |