in algebird-core/src/main/scala/com/twitter/algebird/GeneratedProductAlgebra.scala [4776:5450]
def apply[X, A, B](
applyX: (A, B) => X,
unapplyX: X => Option[(A, B)]
)(implicit asemigroup: Semigroup[A], bsemigroup: Semigroup[B]): Semigroup[X] =
new Product2Semigroup[X, A, B](applyX, unapplyX)(asemigroup, bsemigroup)
def apply[X, A, B, C](
applyX: (A, B, C) => X,
unapplyX: X => Option[(A, B, C)]
)(implicit asemigroup: Semigroup[A], bsemigroup: Semigroup[B], csemigroup: Semigroup[C]): Semigroup[X] =
new Product3Semigroup[X, A, B, C](applyX, unapplyX)(asemigroup, bsemigroup, csemigroup)
def apply[X, A, B, C, D](applyX: (A, B, C, D) => X, unapplyX: X => Option[(A, B, C, D)])(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D]
): Semigroup[X] =
new Product4Semigroup[X, A, B, C, D](applyX, unapplyX)(asemigroup, bsemigroup, csemigroup, dsemigroup)
def apply[X, A, B, C, D, E](applyX: (A, B, C, D, E) => X, unapplyX: X => Option[(A, B, C, D, E)])(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E]
): Semigroup[X] =
new Product5Semigroup[X, A, B, C, D, E](applyX, unapplyX)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup
)
def apply[X, A, B, C, D, E, F](applyX: (A, B, C, D, E, F) => X, unapplyX: X => Option[(A, B, C, D, E, F)])(
implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E],
fsemigroup: Semigroup[F]
): Semigroup[X] =
new Product6Semigroup[X, A, B, C, D, E, F](applyX, unapplyX)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup,
fsemigroup
)
def apply[X, A, B, C, D, E, F, G](
applyX: (A, B, C, D, E, F, G) => X,
unapplyX: X => Option[(A, B, C, D, E, F, G)]
)(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E],
fsemigroup: Semigroup[F],
gsemigroup: Semigroup[G]
): Semigroup[X] =
new Product7Semigroup[X, A, B, C, D, E, F, G](applyX, unapplyX)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup,
fsemigroup,
gsemigroup
)
def apply[X, A, B, C, D, E, F, G, H](
applyX: (A, B, C, D, E, F, G, H) => X,
unapplyX: X => Option[(A, B, C, D, E, F, G, H)]
)(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E],
fsemigroup: Semigroup[F],
gsemigroup: Semigroup[G],
hsemigroup: Semigroup[H]
): Semigroup[X] =
new Product8Semigroup[X, A, B, C, D, E, F, G, H](applyX, unapplyX)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup,
fsemigroup,
gsemigroup,
hsemigroup
)
def apply[X, A, B, C, D, E, F, G, H, I](
applyX: (A, B, C, D, E, F, G, H, I) => X,
unapplyX: X => Option[(A, B, C, D, E, F, G, H, I)]
)(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E],
fsemigroup: Semigroup[F],
gsemigroup: Semigroup[G],
hsemigroup: Semigroup[H],
isemigroup: Semigroup[I]
): Semigroup[X] =
new Product9Semigroup[X, A, B, C, D, E, F, G, H, I](applyX, unapplyX)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup,
fsemigroup,
gsemigroup,
hsemigroup,
isemigroup
)
def apply[X, A, B, C, D, E, F, G, H, I, J](
applyX: (A, B, C, D, E, F, G, H, I, J) => X,
unapplyX: X => Option[(A, B, C, D, E, F, G, H, I, J)]
)(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E],
fsemigroup: Semigroup[F],
gsemigroup: Semigroup[G],
hsemigroup: Semigroup[H],
isemigroup: Semigroup[I],
jsemigroup: Semigroup[J]
): Semigroup[X] =
new Product10Semigroup[X, A, B, C, D, E, F, G, H, I, J](applyX, unapplyX)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup,
fsemigroup,
gsemigroup,
hsemigroup,
isemigroup,
jsemigroup
)
def apply[X, A, B, C, D, E, F, G, H, I, J, K](
applyX: (A, B, C, D, E, F, G, H, I, J, K) => X,
unapplyX: X => Option[(A, B, C, D, E, F, G, H, I, J, K)]
)(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E],
fsemigroup: Semigroup[F],
gsemigroup: Semigroup[G],
hsemigroup: Semigroup[H],
isemigroup: Semigroup[I],
jsemigroup: Semigroup[J],
ksemigroup: Semigroup[K]
): Semigroup[X] =
new Product11Semigroup[X, A, B, C, D, E, F, G, H, I, J, K](applyX, unapplyX)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup,
fsemigroup,
gsemigroup,
hsemigroup,
isemigroup,
jsemigroup,
ksemigroup
)
def apply[X, A, B, C, D, E, F, G, H, I, J, K, L](
applyX: (A, B, C, D, E, F, G, H, I, J, K, L) => X,
unapplyX: X => Option[(A, B, C, D, E, F, G, H, I, J, K, L)]
)(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E],
fsemigroup: Semigroup[F],
gsemigroup: Semigroup[G],
hsemigroup: Semigroup[H],
isemigroup: Semigroup[I],
jsemigroup: Semigroup[J],
ksemigroup: Semigroup[K],
lsemigroup: Semigroup[L]
): Semigroup[X] =
new Product12Semigroup[X, A, B, C, D, E, F, G, H, I, J, K, L](applyX, unapplyX)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup,
fsemigroup,
gsemigroup,
hsemigroup,
isemigroup,
jsemigroup,
ksemigroup,
lsemigroup
)
def apply[X, A, B, C, D, E, F, G, H, I, J, K, L, M](
applyX: (A, B, C, D, E, F, G, H, I, J, K, L, M) => X,
unapplyX: X => Option[(A, B, C, D, E, F, G, H, I, J, K, L, M)]
)(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E],
fsemigroup: Semigroup[F],
gsemigroup: Semigroup[G],
hsemigroup: Semigroup[H],
isemigroup: Semigroup[I],
jsemigroup: Semigroup[J],
ksemigroup: Semigroup[K],
lsemigroup: Semigroup[L],
msemigroup: Semigroup[M]
): Semigroup[X] =
new Product13Semigroup[X, A, B, C, D, E, F, G, H, I, J, K, L, M](applyX, unapplyX)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup,
fsemigroup,
gsemigroup,
hsemigroup,
isemigroup,
jsemigroup,
ksemigroup,
lsemigroup,
msemigroup
)
def apply[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N](
applyX: (A, B, C, D, E, F, G, H, I, J, K, L, M, N) => X,
unapplyX: X => Option[(A, B, C, D, E, F, G, H, I, J, K, L, M, N)]
)(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E],
fsemigroup: Semigroup[F],
gsemigroup: Semigroup[G],
hsemigroup: Semigroup[H],
isemigroup: Semigroup[I],
jsemigroup: Semigroup[J],
ksemigroup: Semigroup[K],
lsemigroup: Semigroup[L],
msemigroup: Semigroup[M],
nsemigroup: Semigroup[N]
): Semigroup[X] =
new Product14Semigroup[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N](
applyX,
unapplyX
)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup,
fsemigroup,
gsemigroup,
hsemigroup,
isemigroup,
jsemigroup,
ksemigroup,
lsemigroup,
msemigroup,
nsemigroup
)
def apply[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O](
applyX: (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) => X,
unapplyX: X => Option[(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)]
)(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E],
fsemigroup: Semigroup[F],
gsemigroup: Semigroup[G],
hsemigroup: Semigroup[H],
isemigroup: Semigroup[I],
jsemigroup: Semigroup[J],
ksemigroup: Semigroup[K],
lsemigroup: Semigroup[L],
msemigroup: Semigroup[M],
nsemigroup: Semigroup[N],
osemigroup: Semigroup[O]
): Semigroup[X] =
new Product15Semigroup[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O](
applyX,
unapplyX
)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup,
fsemigroup,
gsemigroup,
hsemigroup,
isemigroup,
jsemigroup,
ksemigroup,
lsemigroup,
msemigroup,
nsemigroup,
osemigroup
)
def apply[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P](
applyX: (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P) => X,
unapplyX: X => Option[(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)]
)(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E],
fsemigroup: Semigroup[F],
gsemigroup: Semigroup[G],
hsemigroup: Semigroup[H],
isemigroup: Semigroup[I],
jsemigroup: Semigroup[J],
ksemigroup: Semigroup[K],
lsemigroup: Semigroup[L],
msemigroup: Semigroup[M],
nsemigroup: Semigroup[N],
osemigroup: Semigroup[O],
psemigroup: Semigroup[P]
): Semigroup[X] =
new Product16Semigroup[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P](
applyX,
unapplyX
)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup,
fsemigroup,
gsemigroup,
hsemigroup,
isemigroup,
jsemigroup,
ksemigroup,
lsemigroup,
msemigroup,
nsemigroup,
osemigroup,
psemigroup
)
def apply[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q](
applyX: (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q) => X,
unapplyX: X => Option[(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)]
)(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E],
fsemigroup: Semigroup[F],
gsemigroup: Semigroup[G],
hsemigroup: Semigroup[H],
isemigroup: Semigroup[I],
jsemigroup: Semigroup[J],
ksemigroup: Semigroup[K],
lsemigroup: Semigroup[L],
msemigroup: Semigroup[M],
nsemigroup: Semigroup[N],
osemigroup: Semigroup[O],
psemigroup: Semigroup[P],
qsemigroup: Semigroup[Q]
): Semigroup[X] =
new Product17Semigroup[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q](
applyX,
unapplyX
)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup,
fsemigroup,
gsemigroup,
hsemigroup,
isemigroup,
jsemigroup,
ksemigroup,
lsemigroup,
msemigroup,
nsemigroup,
osemigroup,
psemigroup,
qsemigroup
)
def apply[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R](
applyX: (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R) => X,
unapplyX: X => Option[(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)]
)(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E],
fsemigroup: Semigroup[F],
gsemigroup: Semigroup[G],
hsemigroup: Semigroup[H],
isemigroup: Semigroup[I],
jsemigroup: Semigroup[J],
ksemigroup: Semigroup[K],
lsemigroup: Semigroup[L],
msemigroup: Semigroup[M],
nsemigroup: Semigroup[N],
osemigroup: Semigroup[O],
psemigroup: Semigroup[P],
qsemigroup: Semigroup[Q],
rsemigroup: Semigroup[R]
): Semigroup[X] =
new Product18Semigroup[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R](
applyX,
unapplyX
)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup,
fsemigroup,
gsemigroup,
hsemigroup,
isemigroup,
jsemigroup,
ksemigroup,
lsemigroup,
msemigroup,
nsemigroup,
osemigroup,
psemigroup,
qsemigroup,
rsemigroup
)
def apply[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S](
applyX: (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S) => X,
unapplyX: X => Option[(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)]
)(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E],
fsemigroup: Semigroup[F],
gsemigroup: Semigroup[G],
hsemigroup: Semigroup[H],
isemigroup: Semigroup[I],
jsemigroup: Semigroup[J],
ksemigroup: Semigroup[K],
lsemigroup: Semigroup[L],
msemigroup: Semigroup[M],
nsemigroup: Semigroup[N],
osemigroup: Semigroup[O],
psemigroup: Semigroup[P],
qsemigroup: Semigroup[Q],
rsemigroup: Semigroup[R],
ssemigroup: Semigroup[S]
): Semigroup[X] =
new Product19Semigroup[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S](
applyX,
unapplyX
)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup,
fsemigroup,
gsemigroup,
hsemigroup,
isemigroup,
jsemigroup,
ksemigroup,
lsemigroup,
msemigroup,
nsemigroup,
osemigroup,
psemigroup,
qsemigroup,
rsemigroup,
ssemigroup
)
def apply[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T](
applyX: (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T) => X,
unapplyX: X => Option[(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)]
)(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E],
fsemigroup: Semigroup[F],
gsemigroup: Semigroup[G],
hsemigroup: Semigroup[H],
isemigroup: Semigroup[I],
jsemigroup: Semigroup[J],
ksemigroup: Semigroup[K],
lsemigroup: Semigroup[L],
msemigroup: Semigroup[M],
nsemigroup: Semigroup[N],
osemigroup: Semigroup[O],
psemigroup: Semigroup[P],
qsemigroup: Semigroup[Q],
rsemigroup: Semigroup[R],
ssemigroup: Semigroup[S],
tsemigroup: Semigroup[T]
): Semigroup[X] =
new Product20Semigroup[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T](
applyX,
unapplyX
)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup,
fsemigroup,
gsemigroup,
hsemigroup,
isemigroup,
jsemigroup,
ksemigroup,
lsemigroup,
msemigroup,
nsemigroup,
osemigroup,
psemigroup,
qsemigroup,
rsemigroup,
ssemigroup,
tsemigroup
)
def apply[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U](
applyX: (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U) => X,
unapplyX: X => Option[(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U)]
)(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E],
fsemigroup: Semigroup[F],
gsemigroup: Semigroup[G],
hsemigroup: Semigroup[H],
isemigroup: Semigroup[I],
jsemigroup: Semigroup[J],
ksemigroup: Semigroup[K],
lsemigroup: Semigroup[L],
msemigroup: Semigroup[M],
nsemigroup: Semigroup[N],
osemigroup: Semigroup[O],
psemigroup: Semigroup[P],
qsemigroup: Semigroup[Q],
rsemigroup: Semigroup[R],
ssemigroup: Semigroup[S],
tsemigroup: Semigroup[T],
usemigroup: Semigroup[U]
): Semigroup[X] =
new Product21Semigroup[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U](
applyX,
unapplyX
)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup,
fsemigroup,
gsemigroup,
hsemigroup,
isemigroup,
jsemigroup,
ksemigroup,
lsemigroup,
msemigroup,
nsemigroup,
osemigroup,
psemigroup,
qsemigroup,
rsemigroup,
ssemigroup,
tsemigroup,
usemigroup
)
def apply[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V](
applyX: (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V) => X,
unapplyX: X => Option[(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V)]
)(implicit
asemigroup: Semigroup[A],
bsemigroup: Semigroup[B],
csemigroup: Semigroup[C],
dsemigroup: Semigroup[D],
esemigroup: Semigroup[E],
fsemigroup: Semigroup[F],
gsemigroup: Semigroup[G],
hsemigroup: Semigroup[H],
isemigroup: Semigroup[I],
jsemigroup: Semigroup[J],
ksemigroup: Semigroup[K],
lsemigroup: Semigroup[L],
msemigroup: Semigroup[M],
nsemigroup: Semigroup[N],
osemigroup: Semigroup[O],
psemigroup: Semigroup[P],
qsemigroup: Semigroup[Q],
rsemigroup: Semigroup[R],
ssemigroup: Semigroup[S],
tsemigroup: Semigroup[T],
usemigroup: Semigroup[U],
vsemigroup: Semigroup[V]
): Semigroup[X] =
new Product22Semigroup[X, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V](
applyX,
unapplyX
)(
asemigroup,
bsemigroup,
csemigroup,
dsemigroup,
esemigroup,
fsemigroup,
gsemigroup,
hsemigroup,
isemigroup,
jsemigroup,
ksemigroup,
lsemigroup,
msemigroup,
nsemigroup,
osemigroup,
psemigroup,
qsemigroup,
rsemigroup,
ssemigroup,
tsemigroup,
usemigroup,
vsemigroup
)
}
trait ProductMonoids {