
arrow.generic.coproduct17.Coproduct17.kt Maven / Gradle / Ivy
package arrow.generic.coproduct17
import arrow.core.Option
import arrow.core.toOption
import kotlin.Suppress
import kotlin.Unit
/**
* Represents a sealed hierarchy of 17 types where only one of the types is actually present.
*/
sealed class Coproduct17
/**
* Represents the first type of a Coproduct17
*/
data class First(val a: A) : Coproduct17()
/**
* Represents the second type of a Coproduct17
*/
data class Second(val b: B) : Coproduct17()
/**
* Represents the third type of a Coproduct17
*/
data class Third(val c: C) : Coproduct17()
/**
* Represents the fourth type of a Coproduct17
*/
data class Fourth(val d: D) : Coproduct17()
/**
* Represents the fifth type of a Coproduct17
*/
data class Fifth(val e: E) : Coproduct17()
/**
* Represents the sixth type of a Coproduct17
*/
data class Sixth(val f: F) : Coproduct17()
/**
* Represents the seventh type of a Coproduct17
*/
data class Seventh(val g: G) : Coproduct17()
/**
* Represents the eighth type of a Coproduct17
*/
data class Eighth(val h: H) : Coproduct17()
/**
* Represents the ninth type of a Coproduct17
*/
data class Ninth(val i: I) : Coproduct17()
/**
* Represents the tenth type of a Coproduct17
*/
data class Tenth(val j: J) : Coproduct17()
/**
* Represents the eleventh type of a Coproduct17
*/
data class Eleventh(val k: K) : Coproduct17()
/**
* Represents the twelfth type of a Coproduct17
*/
data class Twelfth(val l: L) : Coproduct17()
/**
* Represents the thirteenth type of a Coproduct17
*/
data class Thirteenth(val m: M) : Coproduct17()
/**
* Represents the fourteenth type of a Coproduct17
*/
data class Fourteenth(val n: N) : Coproduct17()
/**
* Represents the fifteenth type of a Coproduct17
*/
data class Fifteenth(val o: O) : Coproduct17()
/**
* Represents the sixteenth type of a Coproduct17
*/
data class Sixteenth(val p: P) : Coproduct17()
/**
* Represents the seventeenth type of a Coproduct17
*/
data class Seventeenth(val q: Q) : Coproduct17()
/**
* Creates a Coproduct from the A type
*
* @return A Coproduct17 where the receiver is
* the A
*/
fun A.first(): Coproduct17 = First(this)
/**
* Creates a Coproduct from the B type
*
* @return A Coproduct17 where the receiver is
* the B
*/
fun B.second(): Coproduct17 = Second(this)
/**
* Creates a Coproduct from the C type
*
* @return A Coproduct17 where the receiver is
* the C
*/
fun C.third(): Coproduct17 = Third(this)
/**
* Creates a Coproduct from the D type
*
* @return A Coproduct17 where the receiver is
* the D
*/
fun D.fourth(): Coproduct17 = Fourth(this)
/**
* Creates a Coproduct from the E type
*
* @return A Coproduct17 where the receiver is
* the E
*/
fun E.fifth(): Coproduct17 = Fifth(this)
/**
* Creates a Coproduct from the F type
*
* @return A Coproduct17 where the receiver is
* the F
*/
fun F.sixth(): Coproduct17 = Sixth(this)
/**
* Creates a Coproduct from the G type
*
* @return A Coproduct17 where the receiver is
* the G
*/
fun G.seventh(): Coproduct17 = Seventh(this)
/**
* Creates a Coproduct from the H type
*
* @return A Coproduct17 where the receiver is
* the H
*/
fun H.eighth(): Coproduct17 = Eighth(this)
/**
* Creates a Coproduct from the I type
*
* @return A Coproduct17 where the receiver is
* the I
*/
fun I.ninth(): Coproduct17 = Ninth(this)
/**
* Creates a Coproduct from the J type
*
* @return A Coproduct17 where the receiver is
* the J
*/
fun J.tenth(): Coproduct17 = Tenth(this)
/**
* Creates a Coproduct from the K type
*
* @return A Coproduct17 where the receiver is
* the K
*/
fun K.eleventh(): Coproduct17 = Eleventh(this)
/**
* Creates a Coproduct from the L type
*
* @return A Coproduct17 where the receiver is
* the L
*/
fun L.twelfth(): Coproduct17 = Twelfth(this)
/**
* Creates a Coproduct from the M type
*
* @return A Coproduct17 where the receiver is
* the M
*/
fun M.thirteenth(): Coproduct17 = Thirteenth(this)
/**
* Creates a Coproduct from the N type
*
* @return A Coproduct17 where the receiver is
* the N
*/
fun N.fourteenth(): Coproduct17 = Fourteenth(this)
/**
* Creates a Coproduct from the O type
*
* @return A Coproduct17 where the receiver is
* the O
*/
fun O.fifteenth(): Coproduct17 = Fifteenth(this)
/**
* Creates a Coproduct from the P type
*
* @return A Coproduct17 where the receiver is
* the P
*/
fun P.sixteenth(): Coproduct17 = Sixteenth(this)
/**
* Creates a Coproduct from the Q type
*
* @return A Coproduct17 where the receiver is
* the Q
*/
fun Q.seventeenth(): Coproduct17 = Seventeenth(this)
/**
* Transforms the Coproduct into an Option based on the actual value of the Coproduct
*
* @return None if the Coproduct was not the specified type, Some if it was the specified type
*/
fun Coproduct17.select(): Option = (this
as? First)?.a.toOption()
/**
* Transforms the Coproduct into an Option based on the actual value of the Coproduct
*
* @return None if the Coproduct was not the specified type, Some if it was the specified type
*/
@Suppress("UNUSED_PARAMETER")
fun Coproduct17<*, B, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.select(dummy0: Unit = Unit):
Option = (this as? Second)?.b.toOption()
/**
* Transforms the Coproduct into an Option based on the actual value of the Coproduct
*
* @return None if the Coproduct was not the specified type, Some if it was the specified type
*/
@Suppress("UNUSED_PARAMETER")
fun Coproduct17<*, *, C, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.select(dummy0: Unit = Unit,
dummy1: Unit = Unit): Option = (this as? Third)?.c.toOption()
/**
* Transforms the Coproduct into an Option based on the actual value of the Coproduct
*
* @return None if the Coproduct was not the specified type, Some if it was the specified type
*/
@Suppress("UNUSED_PARAMETER")
fun Coproduct17<*, *, *, D, *, *, *, *, *, *, *, *, *, *, *, *, *>.select(
dummy0: Unit = Unit,
dummy1: Unit = Unit,
dummy2: Unit = Unit
): Option = (this as? Fourth)?.d.toOption()
/**
* Transforms the Coproduct into an Option based on the actual value of the Coproduct
*
* @return None if the Coproduct was not the specified type, Some if it was the specified type
*/
@Suppress("UNUSED_PARAMETER")
fun Coproduct17<*, *, *, *, E, *, *, *, *, *, *, *, *, *, *, *, *>.select(
dummy0: Unit = Unit,
dummy1: Unit = Unit,
dummy2: Unit = Unit,
dummy3: Unit = Unit
): Option = (this as? Fifth)?.e.toOption()
/**
* Transforms the Coproduct into an Option based on the actual value of the Coproduct
*
* @return None if the Coproduct was not the specified type, Some if it was the specified type
*/
@Suppress("UNUSED_PARAMETER")
fun Coproduct17<*, *, *, *, *, F, *, *, *, *, *, *, *, *, *, *, *>.select(
dummy0: Unit = Unit,
dummy1: Unit = Unit,
dummy2: Unit = Unit,
dummy3: Unit = Unit,
dummy4: Unit = Unit
): Option = (this as? Sixth)?.f.toOption()
/**
* Transforms the Coproduct into an Option based on the actual value of the Coproduct
*
* @return None if the Coproduct was not the specified type, Some if it was the specified type
*/
@Suppress("UNUSED_PARAMETER")
fun Coproduct17<*, *, *, *, *, *, G, *, *, *, *, *, *, *, *, *, *>.select(
dummy0: Unit = Unit,
dummy1: Unit = Unit,
dummy2: Unit = Unit,
dummy3: Unit = Unit,
dummy4: Unit = Unit,
dummy5: Unit = Unit
): Option = (this as? Seventh)?.g.toOption()
/**
* Transforms the Coproduct into an Option based on the actual value of the Coproduct
*
* @return None if the Coproduct was not the specified type, Some if it was the specified type
*/
@Suppress("UNUSED_PARAMETER")
fun Coproduct17<*, *, *, *, *, *, *, H, *, *, *, *, *, *, *, *, *>.select(
dummy0: Unit = Unit,
dummy1: Unit = Unit,
dummy2: Unit = Unit,
dummy3: Unit = Unit,
dummy4: Unit = Unit,
dummy5: Unit = Unit,
dummy6: Unit = Unit
): Option = (this as? Eighth)?.h.toOption()
/**
* Transforms the Coproduct into an Option based on the actual value of the Coproduct
*
* @return None if the Coproduct was not the specified type, Some if it was the specified type
*/
@Suppress("UNUSED_PARAMETER")
fun Coproduct17<*, *, *, *, *, *, *, *, I, *, *, *, *, *, *, *, *>.select(
dummy0: Unit = Unit,
dummy1: Unit = Unit,
dummy2: Unit = Unit,
dummy3: Unit = Unit,
dummy4: Unit = Unit,
dummy5: Unit = Unit,
dummy6: Unit = Unit,
dummy7: Unit = Unit
): Option = (this as? Ninth)?.i.toOption()
/**
* Transforms the Coproduct into an Option based on the actual value of the Coproduct
*
* @return None if the Coproduct was not the specified type, Some if it was the specified type
*/
@Suppress("UNUSED_PARAMETER")
fun Coproduct17<*, *, *, *, *, *, *, *, *, J, *, *, *, *, *, *, *>.select(
dummy0: Unit = Unit,
dummy1: Unit = Unit,
dummy2: Unit = Unit,
dummy3: Unit = Unit,
dummy4: Unit = Unit,
dummy5: Unit = Unit,
dummy6: Unit = Unit,
dummy7: Unit = Unit,
dummy8: Unit = Unit
): Option = (this as? Tenth)?.j.toOption()
/**
* Transforms the Coproduct into an Option based on the actual value of the Coproduct
*
* @return None if the Coproduct was not the specified type, Some if it was the specified type
*/
@Suppress("UNUSED_PARAMETER")
fun Coproduct17<*, *, *, *, *, *, *, *, *, *, K, *, *, *, *, *, *>.select(
dummy0: Unit = Unit,
dummy1: Unit = Unit,
dummy2: Unit = Unit,
dummy3: Unit = Unit,
dummy4: Unit = Unit,
dummy5: Unit = Unit,
dummy6: Unit = Unit,
dummy7: Unit = Unit,
dummy8: Unit = Unit,
dummy9: Unit = Unit
): Option = (this as? Eleventh)?.k.toOption()
/**
* Transforms the Coproduct into an Option based on the actual value of the Coproduct
*
* @return None if the Coproduct was not the specified type, Some if it was the specified type
*/
@Suppress("UNUSED_PARAMETER")
fun Coproduct17<*, *, *, *, *, *, *, *, *, *, *, L, *, *, *, *, *>.select(
dummy0: Unit = Unit,
dummy1: Unit = Unit,
dummy2: Unit = Unit,
dummy3: Unit = Unit,
dummy4: Unit = Unit,
dummy5: Unit = Unit,
dummy6: Unit = Unit,
dummy7: Unit = Unit,
dummy8: Unit = Unit,
dummy9: Unit = Unit,
dummy10: Unit = Unit
): Option = (this as? Twelfth)?.l.toOption()
/**
* Transforms the Coproduct into an Option based on the actual value of the Coproduct
*
* @return None if the Coproduct was not the specified type, Some if it was the specified type
*/
@Suppress("UNUSED_PARAMETER")
fun Coproduct17<*, *, *, *, *, *, *, *, *, *, *, *, M, *, *, *, *>.select(
dummy0: Unit = Unit,
dummy1: Unit = Unit,
dummy2: Unit = Unit,
dummy3: Unit = Unit,
dummy4: Unit = Unit,
dummy5: Unit = Unit,
dummy6: Unit = Unit,
dummy7: Unit = Unit,
dummy8: Unit = Unit,
dummy9: Unit = Unit,
dummy10: Unit = Unit,
dummy11: Unit = Unit
): Option = (this as? Thirteenth)?.m.toOption()
/**
* Transforms the Coproduct into an Option based on the actual value of the Coproduct
*
* @return None if the Coproduct was not the specified type, Some if it was the specified type
*/
@Suppress("UNUSED_PARAMETER")
fun Coproduct17<*, *, *, *, *, *, *, *, *, *, *, *, *, N, *, *, *>.select(
dummy0: Unit = Unit,
dummy1: Unit = Unit,
dummy2: Unit = Unit,
dummy3: Unit = Unit,
dummy4: Unit = Unit,
dummy5: Unit = Unit,
dummy6: Unit = Unit,
dummy7: Unit = Unit,
dummy8: Unit = Unit,
dummy9: Unit = Unit,
dummy10: Unit = Unit,
dummy11: Unit = Unit,
dummy12: Unit = Unit
): Option = (this as? Fourteenth)?.n.toOption()
/**
* Transforms the Coproduct into an Option based on the actual value of the Coproduct
*
* @return None if the Coproduct was not the specified type, Some if it was the specified type
*/
@Suppress("UNUSED_PARAMETER")
fun Coproduct17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, O, *, *>.select(
dummy0: Unit = Unit,
dummy1: Unit = Unit,
dummy2: Unit = Unit,
dummy3: Unit = Unit,
dummy4: Unit = Unit,
dummy5: Unit = Unit,
dummy6: Unit = Unit,
dummy7: Unit = Unit,
dummy8: Unit = Unit,
dummy9: Unit = Unit,
dummy10: Unit = Unit,
dummy11: Unit = Unit,
dummy12: Unit = Unit,
dummy13: Unit = Unit
): Option = (this as? Fifteenth)?.o.toOption()
/**
* Transforms the Coproduct into an Option based on the actual value of the Coproduct
*
* @return None if the Coproduct was not the specified type, Some if it was the specified type
*/
@Suppress("UNUSED_PARAMETER")
fun Coproduct17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, P, *>.select(
dummy0: Unit = Unit,
dummy1: Unit = Unit,
dummy2: Unit = Unit,
dummy3: Unit = Unit,
dummy4: Unit = Unit,
dummy5: Unit = Unit,
dummy6: Unit = Unit,
dummy7: Unit = Unit,
dummy8: Unit = Unit,
dummy9: Unit = Unit,
dummy10: Unit = Unit,
dummy11: Unit = Unit,
dummy12: Unit = Unit,
dummy13: Unit = Unit,
dummy14: Unit = Unit
): Option
= (this as? Sixteenth)?.p.toOption()
/**
* Transforms the Coproduct into an Option based on the actual value of the Coproduct
*
* @return None if the Coproduct was not the specified type, Some if it was the specified type
*/
@Suppress("UNUSED_PARAMETER")
fun Coproduct17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, Q>.select(
dummy0: Unit = Unit,
dummy1: Unit = Unit,
dummy2: Unit = Unit,
dummy3: Unit = Unit,
dummy4: Unit = Unit,
dummy5: Unit = Unit,
dummy6: Unit = Unit,
dummy7: Unit = Unit,
dummy8: Unit = Unit,
dummy9: Unit = Unit,
dummy10: Unit = Unit,
dummy11: Unit = Unit,
dummy12: Unit = Unit,
dummy13: Unit = Unit,
dummy14: Unit = Unit,
dummy15: Unit = Unit
): Option = (this as? Seventeenth)?.q.toOption()
/**
* Runs the function related to the actual value of the Coproduct and returns the result
*
* @param a The function used to map A to the RESULT type
* @param b The function used to map B to the RESULT type
* @param c The function used to map C to the RESULT type
* @param d The function used to map D to the RESULT type
* @param e The function used to map E to the RESULT type
* @param f The function used to map F to the RESULT type
* @param g The function used to map G to the RESULT type
* @param h The function used to map H to the RESULT type
* @param i The function used to map I to the RESULT type
* @param j The function used to map J to the RESULT type
* @param k The function used to map K to the RESULT type
* @param l The function used to map L to the RESULT type
* @param m The function used to map M to the RESULT type
* @param n The function used to map N to the RESULT type
* @param o The function used to map O to the RESULT type
* @param p The function used to map P to the RESULT type
* @param q The function used to map Q to the RESULT type
*
* @return RESULT generated by one of the input functions
*/
fun Coproduct17.fold(
a: (A) -> RESULT,
b: (B) -> RESULT,
c: (C) -> RESULT,
d: (D) -> RESULT,
e: (E) -> RESULT,
f: (F) -> RESULT,
g: (G) -> RESULT,
h: (H) -> RESULT,
i: (I) -> RESULT,
j: (J) -> RESULT,
k: (K) -> RESULT,
l: (L) -> RESULT,
m: (M) -> RESULT,
n: (N) -> RESULT,
o: (O) -> RESULT,
p: (P) -> RESULT,
q: (Q) -> RESULT
): RESULT = when (this) {
is First -> a(this.a)
is Second -> b(this.b)
is Third -> c(this.c)
is Fourth -> d(this.d)
is Fifth -> e(this.e)
is Sixth -> f(this.f)
is Seventh -> g(this.g)
is Eighth -> h(this.h)
is Ninth -> i(this.i)
is Tenth -> j(this.j)
is Eleventh -> k(this.k)
is Twelfth -> l(this.l)
is Thirteenth -> m(this.m)
is Fourteenth -> n(this.n)
is Fifteenth -> o(this.o)
is Sixteenth -> p(this.p)
is Seventeenth -> q(this.q)
}