Skip to content

Instantly share code, notes, and snippets.

@bluenote10
Last active December 16, 2015 16:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bluenote10/5465957 to your computer and use it in GitHub Desktop.
Save bluenote10/5465957 to your computer and use it in GitHub Desktop.
Scala: cross (cartesian) product with multiple sources and heterogeneous types. More information: http://stackoverflow.com/q/16219545/1804173
trait CrossProduct[A,B,C] {
def cross( as: Traversable[A], bs: Traversable[B] ): Traversable[C]
}
trait LowPriorityCrossProductImplicits {
private type TV[X] = Traversable[X]
implicit def crosser2[A,B] = new CrossProduct[A,B,(A,B)] {
def cross( as: TV[A], bs: TV[B] ): TV[(A,B)] = for { a <- as; b <- bs } yield (a, b)
}
}
object CrossProduct extends LowPriorityCrossProductImplicits {
private type TV[X] = Traversable[X]
implicit class Crossable[A](xs: Traversable[A]) {
def cross[B,C](ys: Traversable[B])(implicit crosser: CrossProduct[A,B,C]): Traversable[C] = crosser.cross( xs, ys )
}
implicit def crosser3_1[A,B,C] = new CrossProduct[A,(B,C),(A,B,C)] {
def cross( l: TV[A], r: TV[(B,C)] ): TV[(A,B,C)] = for { a <- l; (b,c) <- r } yield (a,b,c)
}
implicit def crosser3_2[A,B,C] = new CrossProduct[(A,B),C,(A,B,C)] {
def cross( l: TV[(A,B)], r: TV[C] ): TV[(A,B,C)] = for { (a,b) <- l; c <- r } yield (a,b,c)
}
implicit def crosser4_1[A,B,C,D] = new CrossProduct[A,(B,C,D),(A,B,C,D)] {
def cross( l: TV[A], r: TV[(B,C,D)] ): TV[(A,B,C,D)] = for { a <- l; (b,c,d) <- r } yield (a,b,c,d)
}
implicit def crosser4_2[A,B,C,D] = new CrossProduct[(A,B),(C,D),(A,B,C,D)] {
def cross( l: TV[(A,B)], r: TV[(C,D)] ): TV[(A,B,C,D)] = for { (a,b) <- l; (c,d) <- r } yield (a,b,c,d)
}
implicit def crosser4_3[A,B,C,D] = new CrossProduct[(A,B,C),D,(A,B,C,D)] {
def cross( l: TV[(A,B,C)], r: TV[D] ): TV[(A,B,C,D)] = for { (a,b,c) <- l; d <- r } yield (a,b,c,d)
}
implicit def crosser5_1[A,B,C,D,E] = new CrossProduct[A,(B,C,D,E),(A,B,C,D,E)] {
def cross( l: TV[A], r: TV[(B,C,D,E)] ): TV[(A,B,C,D,E)] = for { a <- l; (b,c,d,e) <- r } yield (a,b,c,d,e)
}
implicit def crosser5_2[A,B,C,D,E] = new CrossProduct[(A,B),(C,D,E),(A,B,C,D,E)] {
def cross( l: TV[(A,B)], r: TV[(C,D,E)] ): TV[(A,B,C,D,E)] = for { (a,b) <- l; (c,d,e) <- r } yield (a,b,c,d,e)
}
implicit def crosser5_3[A,B,C,D,E] = new CrossProduct[(A,B,C),(D,E),(A,B,C,D,E)] {
def cross( l: TV[(A,B,C)], r: TV[(D,E)] ): TV[(A,B,C,D,E)] = for { (a,b,c) <- l; (d,e) <- r } yield (a,b,c,d,e)
}
implicit def crosser5_4[A,B,C,D,E] = new CrossProduct[(A,B,C,D),E,(A,B,C,D,E)] {
def cross( l: TV[(A,B,C,D)], r: TV[E] ): TV[(A,B,C,D,E)] = for { (a,b,c,d) <- l; e <- r } yield (a,b,c,d,e)
}
implicit def crosser6_1[A,B,C,D,E,F] = new CrossProduct[A,(B,C,D,E,F),(A,B,C,D,E,F)] {
def cross( l: TV[A], r: TV[(B,C,D,E,F)] ): TV[(A,B,C,D,E,F)] = for { a <- l; (b,c,d,e,f) <- r } yield (a,b,c,d,e,f)
}
implicit def crosser6_2[A,B,C,D,E,F] = new CrossProduct[(A,B),(C,D,E,F),(A,B,C,D,E,F)] {
def cross( l: TV[(A,B)], r: TV[(C,D,E,F)] ): TV[(A,B,C,D,E,F)] = for { (a,b) <- l; (c,d,e,f) <- r } yield (a,b,c,d,e,f)
}
implicit def crosser6_3[A,B,C,D,E,F] = new CrossProduct[(A,B,C),(D,E,F),(A,B,C,D,E,F)] {
def cross( l: TV[(A,B,C)], r: TV[(D,E,F)] ): TV[(A,B,C,D,E,F)] = for { (a,b,c) <- l; (d,e,f) <- r } yield (a,b,c,d,e,f)
}
implicit def crosser6_4[A,B,C,D,E,F] = new CrossProduct[(A,B,C,D),(E,F),(A,B,C,D,E,F)] {
def cross( l: TV[(A,B,C,D)], r: TV[(E,F)] ): TV[(A,B,C,D,E,F)] = for { (a,b,c,d) <- l; (e,f) <- r } yield (a,b,c,d,e,f)
}
implicit def crosser6_5[A,B,C,D,E,F] = new CrossProduct[(A,B,C,D,E),F,(A,B,C,D,E,F)] {
def cross( l: TV[(A,B,C,D,E)], r: TV[F] ): TV[(A,B,C,D,E,F)] = for { (a,b,c,d,e) <- l; f <- r } yield (a,b,c,d,e,f)
}
implicit def crosser7_1[A,B,C,D,E,F,G] = new CrossProduct[A,(B,C,D,E,F,G),(A,B,C,D,E,F,G)] {
def cross( l: TV[A], r: TV[(B,C,D,E,F,G)] ): TV[(A,B,C,D,E,F,G)] = for { a <- l; (b,c,d,e,f,g) <- r } yield (a,b,c,d,e,f,g)
}
implicit def crosser7_2[A,B,C,D,E,F,G] = new CrossProduct[(A,B),(C,D,E,F,G),(A,B,C,D,E,F,G)] {
def cross( l: TV[(A,B)], r: TV[(C,D,E,F,G)] ): TV[(A,B,C,D,E,F,G)] = for { (a,b) <- l; (c,d,e,f,g) <- r } yield (a,b,c,d,e,f,g)
}
implicit def crosser7_3[A,B,C,D,E,F,G] = new CrossProduct[(A,B,C),(D,E,F,G),(A,B,C,D,E,F,G)] {
def cross( l: TV[(A,B,C)], r: TV[(D,E,F,G)] ): TV[(A,B,C,D,E,F,G)] = for { (a,b,c) <- l; (d,e,f,g) <- r } yield (a,b,c,d,e,f,g)
}
implicit def crosser7_4[A,B,C,D,E,F,G] = new CrossProduct[(A,B,C,D),(E,F,G),(A,B,C,D,E,F,G)] {
def cross( l: TV[(A,B,C,D)], r: TV[(E,F,G)] ): TV[(A,B,C,D,E,F,G)] = for { (a,b,c,d) <- l; (e,f,g) <- r } yield (a,b,c,d,e,f,g)
}
implicit def crosser7_5[A,B,C,D,E,F,G] = new CrossProduct[(A,B,C,D,E),(F,G),(A,B,C,D,E,F,G)] {
def cross( l: TV[(A,B,C,D,E)], r: TV[(F,G)] ): TV[(A,B,C,D,E,F,G)] = for { (a,b,c,d,e) <- l; (f,g) <- r } yield (a,b,c,d,e,f,g)
}
implicit def crosser7_6[A,B,C,D,E,F,G] = new CrossProduct[(A,B,C,D,E,F),G,(A,B,C,D,E,F,G)] {
def cross( l: TV[(A,B,C,D,E,F)], r: TV[G] ): TV[(A,B,C,D,E,F,G)] = for { (a,b,c,d,e,f) <- l; g <- r } yield (a,b,c,d,e,f,g)
}
implicit def crosser8_1[A,B,C,D,E,F,G,H] = new CrossProduct[A,(B,C,D,E,F,G,H),(A,B,C,D,E,F,G,H)] {
def cross( l: TV[A], r: TV[(B,C,D,E,F,G,H)] ): TV[(A,B,C,D,E,F,G,H)] = for { a <- l; (b,c,d,e,f,g,h) <- r } yield (a,b,c,d,e,f,g,h)
}
implicit def crosser8_2[A,B,C,D,E,F,G,H] = new CrossProduct[(A,B),(C,D,E,F,G,H),(A,B,C,D,E,F,G,H)] {
def cross( l: TV[(A,B)], r: TV[(C,D,E,F,G,H)] ): TV[(A,B,C,D,E,F,G,H)] = for { (a,b) <- l; (c,d,e,f,g,h) <- r } yield (a,b,c,d,e,f,g,h)
}
implicit def crosser8_3[A,B,C,D,E,F,G,H] = new CrossProduct[(A,B,C),(D,E,F,G,H),(A,B,C,D,E,F,G,H)] {
def cross( l: TV[(A,B,C)], r: TV[(D,E,F,G,H)] ): TV[(A,B,C,D,E,F,G,H)] = for { (a,b,c) <- l; (d,e,f,g,h) <- r } yield (a,b,c,d,e,f,g,h)
}
implicit def crosser8_4[A,B,C,D,E,F,G,H] = new CrossProduct[(A,B,C,D),(E,F,G,H),(A,B,C,D,E,F,G,H)] {
def cross( l: TV[(A,B,C,D)], r: TV[(E,F,G,H)] ): TV[(A,B,C,D,E,F,G,H)] = for { (a,b,c,d) <- l; (e,f,g,h) <- r } yield (a,b,c,d,e,f,g,h)
}
implicit def crosser8_5[A,B,C,D,E,F,G,H] = new CrossProduct[(A,B,C,D,E),(F,G,H),(A,B,C,D,E,F,G,H)] {
def cross( l: TV[(A,B,C,D,E)], r: TV[(F,G,H)] ): TV[(A,B,C,D,E,F,G,H)] = for { (a,b,c,d,e) <- l; (f,g,h) <- r } yield (a,b,c,d,e,f,g,h)
}
implicit def crosser8_6[A,B,C,D,E,F,G,H] = new CrossProduct[(A,B,C,D,E,F),(G,H),(A,B,C,D,E,F,G,H)] {
def cross( l: TV[(A,B,C,D,E,F)], r: TV[(G,H)] ): TV[(A,B,C,D,E,F,G,H)] = for { (a,b,c,d,e,f) <- l; (g,h) <- r } yield (a,b,c,d,e,f,g,h)
}
implicit def crosser8_7[A,B,C,D,E,F,G,H] = new CrossProduct[(A,B,C,D,E,F,G),H,(A,B,C,D,E,F,G,H)] {
def cross( l: TV[(A,B,C,D,E,F,G)], r: TV[H] ): TV[(A,B,C,D,E,F,G,H)] = for { (a,b,c,d,e,f,g) <- l; h <- r } yield (a,b,c,d,e,f,g,h)
}
implicit def crosser9_1[A,B,C,D,E,F,G,H,I] = new CrossProduct[A,(B,C,D,E,F,G,H,I),(A,B,C,D,E,F,G,H,I)] {
def cross( l: TV[A], r: TV[(B,C,D,E,F,G,H,I)] ): TV[(A,B,C,D,E,F,G,H,I)] = for { a <- l; (b,c,d,e,f,g,h,i) <- r } yield (a,b,c,d,e,f,g,h,i)
}
implicit def crosser9_2[A,B,C,D,E,F,G,H,I] = new CrossProduct[(A,B),(C,D,E,F,G,H,I),(A,B,C,D,E,F,G,H,I)] {
def cross( l: TV[(A,B)], r: TV[(C,D,E,F,G,H,I)] ): TV[(A,B,C,D,E,F,G,H,I)] = for { (a,b) <- l; (c,d,e,f,g,h,i) <- r } yield (a,b,c,d,e,f,g,h,i)
}
implicit def crosser9_3[A,B,C,D,E,F,G,H,I] = new CrossProduct[(A,B,C),(D,E,F,G,H,I),(A,B,C,D,E,F,G,H,I)] {
def cross( l: TV[(A,B,C)], r: TV[(D,E,F,G,H,I)] ): TV[(A,B,C,D,E,F,G,H,I)] = for { (a,b,c) <- l; (d,e,f,g,h,i) <- r } yield (a,b,c,d,e,f,g,h,i)
}
implicit def crosser9_4[A,B,C,D,E,F,G,H,I] = new CrossProduct[(A,B,C,D),(E,F,G,H,I),(A,B,C,D,E,F,G,H,I)] {
def cross( l: TV[(A,B,C,D)], r: TV[(E,F,G,H,I)] ): TV[(A,B,C,D,E,F,G,H,I)] = for { (a,b,c,d) <- l; (e,f,g,h,i) <- r } yield (a,b,c,d,e,f,g,h,i)
}
implicit def crosser9_5[A,B,C,D,E,F,G,H,I] = new CrossProduct[(A,B,C,D,E),(F,G,H,I),(A,B,C,D,E,F,G,H,I)] {
def cross( l: TV[(A,B,C,D,E)], r: TV[(F,G,H,I)] ): TV[(A,B,C,D,E,F,G,H,I)] = for { (a,b,c,d,e) <- l; (f,g,h,i) <- r } yield (a,b,c,d,e,f,g,h,i)
}
implicit def crosser9_6[A,B,C,D,E,F,G,H,I] = new CrossProduct[(A,B,C,D,E,F),(G,H,I),(A,B,C,D,E,F,G,H,I)] {
def cross( l: TV[(A,B,C,D,E,F)], r: TV[(G,H,I)] ): TV[(A,B,C,D,E,F,G,H,I)] = for { (a,b,c,d,e,f) <- l; (g,h,i) <- r } yield (a,b,c,d,e,f,g,h,i)
}
implicit def crosser9_7[A,B,C,D,E,F,G,H,I] = new CrossProduct[(A,B,C,D,E,F,G),(H,I),(A,B,C,D,E,F,G,H,I)] {
def cross( l: TV[(A,B,C,D,E,F,G)], r: TV[(H,I)] ): TV[(A,B,C,D,E,F,G,H,I)] = for { (a,b,c,d,e,f,g) <- l; (h,i) <- r } yield (a,b,c,d,e,f,g,h,i)
}
implicit def crosser9_8[A,B,C,D,E,F,G,H,I] = new CrossProduct[(A,B,C,D,E,F,G,H),I,(A,B,C,D,E,F,G,H,I)] {
def cross( l: TV[(A,B,C,D,E,F,G,H)], r: TV[I] ): TV[(A,B,C,D,E,F,G,H,I)] = for { (a,b,c,d,e,f,g,h) <- l; i <- r } yield (a,b,c,d,e,f,g,h,i)
}
implicit def crosser10_1[A,B,C,D,E,F,G,H,I,J] = new CrossProduct[A,(B,C,D,E,F,G,H,I,J),(A,B,C,D,E,F,G,H,I,J)] {
def cross( l: TV[A], r: TV[(B,C,D,E,F,G,H,I,J)] ): TV[(A,B,C,D,E,F,G,H,I,J)] = for { a <- l; (b,c,d,e,f,g,h,i,j) <- r } yield (a,b,c,d,e,f,g,h,i,j)
}
implicit def crosser10_2[A,B,C,D,E,F,G,H,I,J] = new CrossProduct[(A,B),(C,D,E,F,G,H,I,J),(A,B,C,D,E,F,G,H,I,J)] {
def cross( l: TV[(A,B)], r: TV[(C,D,E,F,G,H,I,J)] ): TV[(A,B,C,D,E,F,G,H,I,J)] = for { (a,b) <- l; (c,d,e,f,g,h,i,j) <- r } yield (a,b,c,d,e,f,g,h,i,j)
}
implicit def crosser10_3[A,B,C,D,E,F,G,H,I,J] = new CrossProduct[(A,B,C),(D,E,F,G,H,I,J),(A,B,C,D,E,F,G,H,I,J)] {
def cross( l: TV[(A,B,C)], r: TV[(D,E,F,G,H,I,J)] ): TV[(A,B,C,D,E,F,G,H,I,J)] = for { (a,b,c) <- l; (d,e,f,g,h,i,j) <- r } yield (a,b,c,d,e,f,g,h,i,j)
}
implicit def crosser10_4[A,B,C,D,E,F,G,H,I,J] = new CrossProduct[(A,B,C,D),(E,F,G,H,I,J),(A,B,C,D,E,F,G,H,I,J)] {
def cross( l: TV[(A,B,C,D)], r: TV[(E,F,G,H,I,J)] ): TV[(A,B,C,D,E,F,G,H,I,J)] = for { (a,b,c,d) <- l; (e,f,g,h,i,j) <- r } yield (a,b,c,d,e,f,g,h,i,j)
}
implicit def crosser10_5[A,B,C,D,E,F,G,H,I,J] = new CrossProduct[(A,B,C,D,E),(F,G,H,I,J),(A,B,C,D,E,F,G,H,I,J)] {
def cross( l: TV[(A,B,C,D,E)], r: TV[(F,G,H,I,J)] ): TV[(A,B,C,D,E,F,G,H,I,J)] = for { (a,b,c,d,e) <- l; (f,g,h,i,j) <- r } yield (a,b,c,d,e,f,g,h,i,j)
}
implicit def crosser10_6[A,B,C,D,E,F,G,H,I,J] = new CrossProduct[(A,B,C,D,E,F),(G,H,I,J),(A,B,C,D,E,F,G,H,I,J)] {
def cross( l: TV[(A,B,C,D,E,F)], r: TV[(G,H,I,J)] ): TV[(A,B,C,D,E,F,G,H,I,J)] = for { (a,b,c,d,e,f) <- l; (g,h,i,j) <- r } yield (a,b,c,d,e,f,g,h,i,j)
}
implicit def crosser10_7[A,B,C,D,E,F,G,H,I,J] = new CrossProduct[(A,B,C,D,E,F,G),(H,I,J),(A,B,C,D,E,F,G,H,I,J)] {
def cross( l: TV[(A,B,C,D,E,F,G)], r: TV[(H,I,J)] ): TV[(A,B,C,D,E,F,G,H,I,J)] = for { (a,b,c,d,e,f,g) <- l; (h,i,j) <- r } yield (a,b,c,d,e,f,g,h,i,j)
}
implicit def crosser10_8[A,B,C,D,E,F,G,H,I,J] = new CrossProduct[(A,B,C,D,E,F,G,H),(I,J),(A,B,C,D,E,F,G,H,I,J)] {
def cross( l: TV[(A,B,C,D,E,F,G,H)], r: TV[(I,J)] ): TV[(A,B,C,D,E,F,G,H,I,J)] = for { (a,b,c,d,e,f,g,h) <- l; (i,j) <- r } yield (a,b,c,d,e,f,g,h,i,j)
}
implicit def crosser10_9[A,B,C,D,E,F,G,H,I,J] = new CrossProduct[(A,B,C,D,E,F,G,H,I),J,(A,B,C,D,E,F,G,H,I,J)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I)], r: TV[J] ): TV[(A,B,C,D,E,F,G,H,I,J)] = for { (a,b,c,d,e,f,g,h,i) <- l; j <- r } yield (a,b,c,d,e,f,g,h,i,j)
}
implicit def crosser11_1[A,B,C,D,E,F,G,H,I,J,K] = new CrossProduct[A,(B,C,D,E,F,G,H,I,J,K),(A,B,C,D,E,F,G,H,I,J,K)] {
def cross( l: TV[A], r: TV[(B,C,D,E,F,G,H,I,J,K)] ): TV[(A,B,C,D,E,F,G,H,I,J,K)] = for { a <- l; (b,c,d,e,f,g,h,i,j,k) <- r } yield (a,b,c,d,e,f,g,h,i,j,k)
}
implicit def crosser11_2[A,B,C,D,E,F,G,H,I,J,K] = new CrossProduct[(A,B),(C,D,E,F,G,H,I,J,K),(A,B,C,D,E,F,G,H,I,J,K)] {
def cross( l: TV[(A,B)], r: TV[(C,D,E,F,G,H,I,J,K)] ): TV[(A,B,C,D,E,F,G,H,I,J,K)] = for { (a,b) <- l; (c,d,e,f,g,h,i,j,k) <- r } yield (a,b,c,d,e,f,g,h,i,j,k)
}
implicit def crosser11_3[A,B,C,D,E,F,G,H,I,J,K] = new CrossProduct[(A,B,C),(D,E,F,G,H,I,J,K),(A,B,C,D,E,F,G,H,I,J,K)] {
def cross( l: TV[(A,B,C)], r: TV[(D,E,F,G,H,I,J,K)] ): TV[(A,B,C,D,E,F,G,H,I,J,K)] = for { (a,b,c) <- l; (d,e,f,g,h,i,j,k) <- r } yield (a,b,c,d,e,f,g,h,i,j,k)
}
implicit def crosser11_4[A,B,C,D,E,F,G,H,I,J,K] = new CrossProduct[(A,B,C,D),(E,F,G,H,I,J,K),(A,B,C,D,E,F,G,H,I,J,K)] {
def cross( l: TV[(A,B,C,D)], r: TV[(E,F,G,H,I,J,K)] ): TV[(A,B,C,D,E,F,G,H,I,J,K)] = for { (a,b,c,d) <- l; (e,f,g,h,i,j,k) <- r } yield (a,b,c,d,e,f,g,h,i,j,k)
}
implicit def crosser11_5[A,B,C,D,E,F,G,H,I,J,K] = new CrossProduct[(A,B,C,D,E),(F,G,H,I,J,K),(A,B,C,D,E,F,G,H,I,J,K)] {
def cross( l: TV[(A,B,C,D,E)], r: TV[(F,G,H,I,J,K)] ): TV[(A,B,C,D,E,F,G,H,I,J,K)] = for { (a,b,c,d,e) <- l; (f,g,h,i,j,k) <- r } yield (a,b,c,d,e,f,g,h,i,j,k)
}
implicit def crosser11_6[A,B,C,D,E,F,G,H,I,J,K] = new CrossProduct[(A,B,C,D,E,F),(G,H,I,J,K),(A,B,C,D,E,F,G,H,I,J,K)] {
def cross( l: TV[(A,B,C,D,E,F)], r: TV[(G,H,I,J,K)] ): TV[(A,B,C,D,E,F,G,H,I,J,K)] = for { (a,b,c,d,e,f) <- l; (g,h,i,j,k) <- r } yield (a,b,c,d,e,f,g,h,i,j,k)
}
implicit def crosser11_7[A,B,C,D,E,F,G,H,I,J,K] = new CrossProduct[(A,B,C,D,E,F,G),(H,I,J,K),(A,B,C,D,E,F,G,H,I,J,K)] {
def cross( l: TV[(A,B,C,D,E,F,G)], r: TV[(H,I,J,K)] ): TV[(A,B,C,D,E,F,G,H,I,J,K)] = for { (a,b,c,d,e,f,g) <- l; (h,i,j,k) <- r } yield (a,b,c,d,e,f,g,h,i,j,k)
}
implicit def crosser11_8[A,B,C,D,E,F,G,H,I,J,K] = new CrossProduct[(A,B,C,D,E,F,G,H),(I,J,K),(A,B,C,D,E,F,G,H,I,J,K)] {
def cross( l: TV[(A,B,C,D,E,F,G,H)], r: TV[(I,J,K)] ): TV[(A,B,C,D,E,F,G,H,I,J,K)] = for { (a,b,c,d,e,f,g,h) <- l; (i,j,k) <- r } yield (a,b,c,d,e,f,g,h,i,j,k)
}
implicit def crosser11_9[A,B,C,D,E,F,G,H,I,J,K] = new CrossProduct[(A,B,C,D,E,F,G,H,I),(J,K),(A,B,C,D,E,F,G,H,I,J,K)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I)], r: TV[(J,K)] ): TV[(A,B,C,D,E,F,G,H,I,J,K)] = for { (a,b,c,d,e,f,g,h,i) <- l; (j,k) <- r } yield (a,b,c,d,e,f,g,h,i,j,k)
}
implicit def crosser11_10[A,B,C,D,E,F,G,H,I,J,K] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J),K,(A,B,C,D,E,F,G,H,I,J,K)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J)], r: TV[K] ): TV[(A,B,C,D,E,F,G,H,I,J,K)] = for { (a,b,c,d,e,f,g,h,i,j) <- l; k <- r } yield (a,b,c,d,e,f,g,h,i,j,k)
}
implicit def crosser12_1[A,B,C,D,E,F,G,H,I,J,K,L] = new CrossProduct[A,(B,C,D,E,F,G,H,I,J,K,L),(A,B,C,D,E,F,G,H,I,J,K,L)] {
def cross( l: TV[A], r: TV[(B,C,D,E,F,G,H,I,J,K,L)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L)] = for { a <- l; (b,c,d,e,f,g,h,i,j,k,l) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l)
}
implicit def crosser12_2[A,B,C,D,E,F,G,H,I,J,K,L] = new CrossProduct[(A,B),(C,D,E,F,G,H,I,J,K,L),(A,B,C,D,E,F,G,H,I,J,K,L)] {
def cross( l: TV[(A,B)], r: TV[(C,D,E,F,G,H,I,J,K,L)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L)] = for { (a,b) <- l; (c,d,e,f,g,h,i,j,k,l) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l)
}
implicit def crosser12_3[A,B,C,D,E,F,G,H,I,J,K,L] = new CrossProduct[(A,B,C),(D,E,F,G,H,I,J,K,L),(A,B,C,D,E,F,G,H,I,J,K,L)] {
def cross( l: TV[(A,B,C)], r: TV[(D,E,F,G,H,I,J,K,L)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L)] = for { (a,b,c) <- l; (d,e,f,g,h,i,j,k,l) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l)
}
implicit def crosser12_4[A,B,C,D,E,F,G,H,I,J,K,L] = new CrossProduct[(A,B,C,D),(E,F,G,H,I,J,K,L),(A,B,C,D,E,F,G,H,I,J,K,L)] {
def cross( l: TV[(A,B,C,D)], r: TV[(E,F,G,H,I,J,K,L)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L)] = for { (a,b,c,d) <- l; (e,f,g,h,i,j,k,l) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l)
}
implicit def crosser12_5[A,B,C,D,E,F,G,H,I,J,K,L] = new CrossProduct[(A,B,C,D,E),(F,G,H,I,J,K,L),(A,B,C,D,E,F,G,H,I,J,K,L)] {
def cross( l: TV[(A,B,C,D,E)], r: TV[(F,G,H,I,J,K,L)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L)] = for { (a,b,c,d,e) <- l; (f,g,h,i,j,k,l) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l)
}
implicit def crosser12_6[A,B,C,D,E,F,G,H,I,J,K,L] = new CrossProduct[(A,B,C,D,E,F),(G,H,I,J,K,L),(A,B,C,D,E,F,G,H,I,J,K,L)] {
def cross( l: TV[(A,B,C,D,E,F)], r: TV[(G,H,I,J,K,L)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L)] = for { (a,b,c,d,e,f) <- l; (g,h,i,j,k,l) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l)
}
implicit def crosser12_7[A,B,C,D,E,F,G,H,I,J,K,L] = new CrossProduct[(A,B,C,D,E,F,G),(H,I,J,K,L),(A,B,C,D,E,F,G,H,I,J,K,L)] {
def cross( l: TV[(A,B,C,D,E,F,G)], r: TV[(H,I,J,K,L)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L)] = for { (a,b,c,d,e,f,g) <- l; (h,i,j,k,l) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l)
}
implicit def crosser12_8[A,B,C,D,E,F,G,H,I,J,K,L] = new CrossProduct[(A,B,C,D,E,F,G,H),(I,J,K,L),(A,B,C,D,E,F,G,H,I,J,K,L)] {
def cross( l: TV[(A,B,C,D,E,F,G,H)], r: TV[(I,J,K,L)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L)] = for { (a,b,c,d,e,f,g,h) <- l; (i,j,k,l) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l)
}
implicit def crosser12_9[A,B,C,D,E,F,G,H,I,J,K,L] = new CrossProduct[(A,B,C,D,E,F,G,H,I),(J,K,L),(A,B,C,D,E,F,G,H,I,J,K,L)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I)], r: TV[(J,K,L)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L)] = for { (a,b,c,d,e,f,g,h,i) <- l; (j,k,l) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l)
}
implicit def crosser12_10[A,B,C,D,E,F,G,H,I,J,K,L] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J),(K,L),(A,B,C,D,E,F,G,H,I,J,K,L)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J)], r: TV[(K,L)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L)] = for { (a,b,c,d,e,f,g,h,i,j) <- l; (k,l) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l)
}
implicit def crosser12_11[A,B,C,D,E,F,G,H,I,J,K,L] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K),L,(A,B,C,D,E,F,G,H,I,J,K,L)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K)], r: TV[L] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L)] = for { (a,b,c,d,e,f,g,h,i,j,k) <- l; l <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l)
}
implicit def crosser13_1[A,B,C,D,E,F,G,H,I,J,K,L,M] = new CrossProduct[A,(B,C,D,E,F,G,H,I,J,K,L,M),(A,B,C,D,E,F,G,H,I,J,K,L,M)] {
def cross( l: TV[A], r: TV[(B,C,D,E,F,G,H,I,J,K,L,M)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M)] = for { a <- l; (b,c,d,e,f,g,h,i,j,k,l,m) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m)
}
implicit def crosser13_2[A,B,C,D,E,F,G,H,I,J,K,L,M] = new CrossProduct[(A,B),(C,D,E,F,G,H,I,J,K,L,M),(A,B,C,D,E,F,G,H,I,J,K,L,M)] {
def cross( l: TV[(A,B)], r: TV[(C,D,E,F,G,H,I,J,K,L,M)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M)] = for { (a,b) <- l; (c,d,e,f,g,h,i,j,k,l,m) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m)
}
implicit def crosser13_3[A,B,C,D,E,F,G,H,I,J,K,L,M] = new CrossProduct[(A,B,C),(D,E,F,G,H,I,J,K,L,M),(A,B,C,D,E,F,G,H,I,J,K,L,M)] {
def cross( l: TV[(A,B,C)], r: TV[(D,E,F,G,H,I,J,K,L,M)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M)] = for { (a,b,c) <- l; (d,e,f,g,h,i,j,k,l,m) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m)
}
implicit def crosser13_4[A,B,C,D,E,F,G,H,I,J,K,L,M] = new CrossProduct[(A,B,C,D),(E,F,G,H,I,J,K,L,M),(A,B,C,D,E,F,G,H,I,J,K,L,M)] {
def cross( l: TV[(A,B,C,D)], r: TV[(E,F,G,H,I,J,K,L,M)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M)] = for { (a,b,c,d) <- l; (e,f,g,h,i,j,k,l,m) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m)
}
implicit def crosser13_5[A,B,C,D,E,F,G,H,I,J,K,L,M] = new CrossProduct[(A,B,C,D,E),(F,G,H,I,J,K,L,M),(A,B,C,D,E,F,G,H,I,J,K,L,M)] {
def cross( l: TV[(A,B,C,D,E)], r: TV[(F,G,H,I,J,K,L,M)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M)] = for { (a,b,c,d,e) <- l; (f,g,h,i,j,k,l,m) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m)
}
implicit def crosser13_6[A,B,C,D,E,F,G,H,I,J,K,L,M] = new CrossProduct[(A,B,C,D,E,F),(G,H,I,J,K,L,M),(A,B,C,D,E,F,G,H,I,J,K,L,M)] {
def cross( l: TV[(A,B,C,D,E,F)], r: TV[(G,H,I,J,K,L,M)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M)] = for { (a,b,c,d,e,f) <- l; (g,h,i,j,k,l,m) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m)
}
implicit def crosser13_7[A,B,C,D,E,F,G,H,I,J,K,L,M] = new CrossProduct[(A,B,C,D,E,F,G),(H,I,J,K,L,M),(A,B,C,D,E,F,G,H,I,J,K,L,M)] {
def cross( l: TV[(A,B,C,D,E,F,G)], r: TV[(H,I,J,K,L,M)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M)] = for { (a,b,c,d,e,f,g) <- l; (h,i,j,k,l,m) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m)
}
implicit def crosser13_8[A,B,C,D,E,F,G,H,I,J,K,L,M] = new CrossProduct[(A,B,C,D,E,F,G,H),(I,J,K,L,M),(A,B,C,D,E,F,G,H,I,J,K,L,M)] {
def cross( l: TV[(A,B,C,D,E,F,G,H)], r: TV[(I,J,K,L,M)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M)] = for { (a,b,c,d,e,f,g,h) <- l; (i,j,k,l,m) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m)
}
implicit def crosser13_9[A,B,C,D,E,F,G,H,I,J,K,L,M] = new CrossProduct[(A,B,C,D,E,F,G,H,I),(J,K,L,M),(A,B,C,D,E,F,G,H,I,J,K,L,M)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I)], r: TV[(J,K,L,M)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M)] = for { (a,b,c,d,e,f,g,h,i) <- l; (j,k,l,m) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m)
}
implicit def crosser13_10[A,B,C,D,E,F,G,H,I,J,K,L,M] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J),(K,L,M),(A,B,C,D,E,F,G,H,I,J,K,L,M)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J)], r: TV[(K,L,M)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M)] = for { (a,b,c,d,e,f,g,h,i,j) <- l; (k,l,m) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m)
}
implicit def crosser13_11[A,B,C,D,E,F,G,H,I,J,K,L,M] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K),(L,M),(A,B,C,D,E,F,G,H,I,J,K,L,M)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K)], r: TV[(L,M)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M)] = for { (a,b,c,d,e,f,g,h,i,j,k) <- l; (l,m) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m)
}
implicit def crosser13_12[A,B,C,D,E,F,G,H,I,J,K,L,M] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L),M,(A,B,C,D,E,F,G,H,I,J,K,L,M)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L)], r: TV[M] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M)] = for { (a,b,c,d,e,f,g,h,i,j,k,l) <- l; m <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m)
}
implicit def crosser14_1[A,B,C,D,E,F,G,H,I,J,K,L,M,N] = new CrossProduct[A,(B,C,D,E,F,G,H,I,J,K,L,M,N),(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] {
def cross( l: TV[A], r: TV[(B,C,D,E,F,G,H,I,J,K,L,M,N)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] = for { a <- l; (b,c,d,e,f,g,h,i,j,k,l,m,n) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
}
implicit def crosser14_2[A,B,C,D,E,F,G,H,I,J,K,L,M,N] = new CrossProduct[(A,B),(C,D,E,F,G,H,I,J,K,L,M,N),(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] {
def cross( l: TV[(A,B)], r: TV[(C,D,E,F,G,H,I,J,K,L,M,N)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] = for { (a,b) <- l; (c,d,e,f,g,h,i,j,k,l,m,n) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
}
implicit def crosser14_3[A,B,C,D,E,F,G,H,I,J,K,L,M,N] = new CrossProduct[(A,B,C),(D,E,F,G,H,I,J,K,L,M,N),(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] {
def cross( l: TV[(A,B,C)], r: TV[(D,E,F,G,H,I,J,K,L,M,N)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] = for { (a,b,c) <- l; (d,e,f,g,h,i,j,k,l,m,n) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
}
implicit def crosser14_4[A,B,C,D,E,F,G,H,I,J,K,L,M,N] = new CrossProduct[(A,B,C,D),(E,F,G,H,I,J,K,L,M,N),(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] {
def cross( l: TV[(A,B,C,D)], r: TV[(E,F,G,H,I,J,K,L,M,N)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] = for { (a,b,c,d) <- l; (e,f,g,h,i,j,k,l,m,n) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
}
implicit def crosser14_5[A,B,C,D,E,F,G,H,I,J,K,L,M,N] = new CrossProduct[(A,B,C,D,E),(F,G,H,I,J,K,L,M,N),(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] {
def cross( l: TV[(A,B,C,D,E)], r: TV[(F,G,H,I,J,K,L,M,N)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] = for { (a,b,c,d,e) <- l; (f,g,h,i,j,k,l,m,n) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
}
implicit def crosser14_6[A,B,C,D,E,F,G,H,I,J,K,L,M,N] = new CrossProduct[(A,B,C,D,E,F),(G,H,I,J,K,L,M,N),(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] {
def cross( l: TV[(A,B,C,D,E,F)], r: TV[(G,H,I,J,K,L,M,N)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] = for { (a,b,c,d,e,f) <- l; (g,h,i,j,k,l,m,n) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
}
implicit def crosser14_7[A,B,C,D,E,F,G,H,I,J,K,L,M,N] = new CrossProduct[(A,B,C,D,E,F,G),(H,I,J,K,L,M,N),(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] {
def cross( l: TV[(A,B,C,D,E,F,G)], r: TV[(H,I,J,K,L,M,N)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] = for { (a,b,c,d,e,f,g) <- l; (h,i,j,k,l,m,n) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
}
implicit def crosser14_8[A,B,C,D,E,F,G,H,I,J,K,L,M,N] = new CrossProduct[(A,B,C,D,E,F,G,H),(I,J,K,L,M,N),(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] {
def cross( l: TV[(A,B,C,D,E,F,G,H)], r: TV[(I,J,K,L,M,N)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] = for { (a,b,c,d,e,f,g,h) <- l; (i,j,k,l,m,n) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
}
implicit def crosser14_9[A,B,C,D,E,F,G,H,I,J,K,L,M,N] = new CrossProduct[(A,B,C,D,E,F,G,H,I),(J,K,L,M,N),(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I)], r: TV[(J,K,L,M,N)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] = for { (a,b,c,d,e,f,g,h,i) <- l; (j,k,l,m,n) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
}
implicit def crosser14_10[A,B,C,D,E,F,G,H,I,J,K,L,M,N] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J),(K,L,M,N),(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J)], r: TV[(K,L,M,N)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] = for { (a,b,c,d,e,f,g,h,i,j) <- l; (k,l,m,n) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
}
implicit def crosser14_11[A,B,C,D,E,F,G,H,I,J,K,L,M,N] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K),(L,M,N),(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K)], r: TV[(L,M,N)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] = for { (a,b,c,d,e,f,g,h,i,j,k) <- l; (l,m,n) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
}
implicit def crosser14_12[A,B,C,D,E,F,G,H,I,J,K,L,M,N] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L),(M,N),(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L)], r: TV[(M,N)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] = for { (a,b,c,d,e,f,g,h,i,j,k,l) <- l; (m,n) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
}
implicit def crosser14_13[A,B,C,D,E,F,G,H,I,J,K,L,M,N] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L,M),N,(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L,M)], r: TV[N] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N)] = for { (a,b,c,d,e,f,g,h,i,j,k,l,m) <- l; n <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n)
}
implicit def crosser15_1[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O] = new CrossProduct[A,(B,C,D,E,F,G,H,I,J,K,L,M,N,O),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] {
def cross( l: TV[A], r: TV[(B,C,D,E,F,G,H,I,J,K,L,M,N,O)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] = for { a <- l; (b,c,d,e,f,g,h,i,j,k,l,m,n,o) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
}
implicit def crosser15_2[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O] = new CrossProduct[(A,B),(C,D,E,F,G,H,I,J,K,L,M,N,O),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] {
def cross( l: TV[(A,B)], r: TV[(C,D,E,F,G,H,I,J,K,L,M,N,O)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] = for { (a,b) <- l; (c,d,e,f,g,h,i,j,k,l,m,n,o) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
}
implicit def crosser15_3[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O] = new CrossProduct[(A,B,C),(D,E,F,G,H,I,J,K,L,M,N,O),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] {
def cross( l: TV[(A,B,C)], r: TV[(D,E,F,G,H,I,J,K,L,M,N,O)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] = for { (a,b,c) <- l; (d,e,f,g,h,i,j,k,l,m,n,o) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
}
implicit def crosser15_4[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O] = new CrossProduct[(A,B,C,D),(E,F,G,H,I,J,K,L,M,N,O),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] {
def cross( l: TV[(A,B,C,D)], r: TV[(E,F,G,H,I,J,K,L,M,N,O)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] = for { (a,b,c,d) <- l; (e,f,g,h,i,j,k,l,m,n,o) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
}
implicit def crosser15_5[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O] = new CrossProduct[(A,B,C,D,E),(F,G,H,I,J,K,L,M,N,O),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] {
def cross( l: TV[(A,B,C,D,E)], r: TV[(F,G,H,I,J,K,L,M,N,O)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] = for { (a,b,c,d,e) <- l; (f,g,h,i,j,k,l,m,n,o) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
}
implicit def crosser15_6[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O] = new CrossProduct[(A,B,C,D,E,F),(G,H,I,J,K,L,M,N,O),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] {
def cross( l: TV[(A,B,C,D,E,F)], r: TV[(G,H,I,J,K,L,M,N,O)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] = for { (a,b,c,d,e,f) <- l; (g,h,i,j,k,l,m,n,o) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
}
implicit def crosser15_7[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O] = new CrossProduct[(A,B,C,D,E,F,G),(H,I,J,K,L,M,N,O),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] {
def cross( l: TV[(A,B,C,D,E,F,G)], r: TV[(H,I,J,K,L,M,N,O)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] = for { (a,b,c,d,e,f,g) <- l; (h,i,j,k,l,m,n,o) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
}
implicit def crosser15_8[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O] = new CrossProduct[(A,B,C,D,E,F,G,H),(I,J,K,L,M,N,O),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] {
def cross( l: TV[(A,B,C,D,E,F,G,H)], r: TV[(I,J,K,L,M,N,O)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] = for { (a,b,c,d,e,f,g,h) <- l; (i,j,k,l,m,n,o) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
}
implicit def crosser15_9[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O] = new CrossProduct[(A,B,C,D,E,F,G,H,I),(J,K,L,M,N,O),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I)], r: TV[(J,K,L,M,N,O)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] = for { (a,b,c,d,e,f,g,h,i) <- l; (j,k,l,m,n,o) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
}
implicit def crosser15_10[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J),(K,L,M,N,O),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J)], r: TV[(K,L,M,N,O)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] = for { (a,b,c,d,e,f,g,h,i,j) <- l; (k,l,m,n,o) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
}
implicit def crosser15_11[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K),(L,M,N,O),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K)], r: TV[(L,M,N,O)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] = for { (a,b,c,d,e,f,g,h,i,j,k) <- l; (l,m,n,o) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
}
implicit def crosser15_12[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L),(M,N,O),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L)], r: TV[(M,N,O)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] = for { (a,b,c,d,e,f,g,h,i,j,k,l) <- l; (m,n,o) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
}
implicit def crosser15_13[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L,M),(N,O),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L,M)], r: TV[(N,O)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] = for { (a,b,c,d,e,f,g,h,i,j,k,l,m) <- l; (n,o) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
}
implicit def crosser15_14[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L,M,N),O,(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N)], r: TV[O] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)] = for { (a,b,c,d,e,f,g,h,i,j,k,l,m,n) <- l; o <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
}
implicit def crosser16_1[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P] = new CrossProduct[A,(B,C,D,E,F,G,H,I,J,K,L,M,N,O,P),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] {
def cross( l: TV[A], r: TV[(B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] = for { a <- l; (b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
}
implicit def crosser16_2[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P] = new CrossProduct[(A,B),(C,D,E,F,G,H,I,J,K,L,M,N,O,P),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] {
def cross( l: TV[(A,B)], r: TV[(C,D,E,F,G,H,I,J,K,L,M,N,O,P)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] = for { (a,b) <- l; (c,d,e,f,g,h,i,j,k,l,m,n,o,p) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
}
implicit def crosser16_3[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P] = new CrossProduct[(A,B,C),(D,E,F,G,H,I,J,K,L,M,N,O,P),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] {
def cross( l: TV[(A,B,C)], r: TV[(D,E,F,G,H,I,J,K,L,M,N,O,P)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] = for { (a,b,c) <- l; (d,e,f,g,h,i,j,k,l,m,n,o,p) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
}
implicit def crosser16_4[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P] = new CrossProduct[(A,B,C,D),(E,F,G,H,I,J,K,L,M,N,O,P),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] {
def cross( l: TV[(A,B,C,D)], r: TV[(E,F,G,H,I,J,K,L,M,N,O,P)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] = for { (a,b,c,d) <- l; (e,f,g,h,i,j,k,l,m,n,o,p) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
}
implicit def crosser16_5[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P] = new CrossProduct[(A,B,C,D,E),(F,G,H,I,J,K,L,M,N,O,P),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] {
def cross( l: TV[(A,B,C,D,E)], r: TV[(F,G,H,I,J,K,L,M,N,O,P)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] = for { (a,b,c,d,e) <- l; (f,g,h,i,j,k,l,m,n,o,p) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
}
implicit def crosser16_6[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P] = new CrossProduct[(A,B,C,D,E,F),(G,H,I,J,K,L,M,N,O,P),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] {
def cross( l: TV[(A,B,C,D,E,F)], r: TV[(G,H,I,J,K,L,M,N,O,P)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] = for { (a,b,c,d,e,f) <- l; (g,h,i,j,k,l,m,n,o,p) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
}
implicit def crosser16_7[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P] = new CrossProduct[(A,B,C,D,E,F,G),(H,I,J,K,L,M,N,O,P),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] {
def cross( l: TV[(A,B,C,D,E,F,G)], r: TV[(H,I,J,K,L,M,N,O,P)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] = for { (a,b,c,d,e,f,g) <- l; (h,i,j,k,l,m,n,o,p) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
}
implicit def crosser16_8[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P] = new CrossProduct[(A,B,C,D,E,F,G,H),(I,J,K,L,M,N,O,P),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] {
def cross( l: TV[(A,B,C,D,E,F,G,H)], r: TV[(I,J,K,L,M,N,O,P)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] = for { (a,b,c,d,e,f,g,h) <- l; (i,j,k,l,m,n,o,p) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
}
implicit def crosser16_9[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P] = new CrossProduct[(A,B,C,D,E,F,G,H,I),(J,K,L,M,N,O,P),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I)], r: TV[(J,K,L,M,N,O,P)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] = for { (a,b,c,d,e,f,g,h,i) <- l; (j,k,l,m,n,o,p) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
}
implicit def crosser16_10[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J),(K,L,M,N,O,P),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J)], r: TV[(K,L,M,N,O,P)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] = for { (a,b,c,d,e,f,g,h,i,j) <- l; (k,l,m,n,o,p) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
}
implicit def crosser16_11[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K),(L,M,N,O,P),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K)], r: TV[(L,M,N,O,P)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] = for { (a,b,c,d,e,f,g,h,i,j,k) <- l; (l,m,n,o,p) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
}
implicit def crosser16_12[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L),(M,N,O,P),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L)], r: TV[(M,N,O,P)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] = for { (a,b,c,d,e,f,g,h,i,j,k,l) <- l; (m,n,o,p) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
}
implicit def crosser16_13[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L,M),(N,O,P),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L,M)], r: TV[(N,O,P)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] = for { (a,b,c,d,e,f,g,h,i,j,k,l,m) <- l; (n,o,p) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
}
implicit def crosser16_14[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L,M,N),(O,P),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N)], r: TV[(O,P)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] = for { (a,b,c,d,e,f,g,h,i,j,k,l,m,n) <- l; (o,p) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
}
implicit def crosser16_15[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O),P,(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)], r: TV[P] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)] = for { (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) <- l; p <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p)
}
implicit def crosser17_1[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q] = new CrossProduct[A,(B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] {
def cross( l: TV[A], r: TV[(B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] = for { a <- l; (b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
}
implicit def crosser17_2[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q] = new CrossProduct[(A,B),(C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] {
def cross( l: TV[(A,B)], r: TV[(C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] = for { (a,b) <- l; (c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
}
implicit def crosser17_3[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q] = new CrossProduct[(A,B,C),(D,E,F,G,H,I,J,K,L,M,N,O,P,Q),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] {
def cross( l: TV[(A,B,C)], r: TV[(D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] = for { (a,b,c) <- l; (d,e,f,g,h,i,j,k,l,m,n,o,p,q) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
}
implicit def crosser17_4[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q] = new CrossProduct[(A,B,C,D),(E,F,G,H,I,J,K,L,M,N,O,P,Q),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] {
def cross( l: TV[(A,B,C,D)], r: TV[(E,F,G,H,I,J,K,L,M,N,O,P,Q)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] = for { (a,b,c,d) <- l; (e,f,g,h,i,j,k,l,m,n,o,p,q) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
}
implicit def crosser17_5[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q] = new CrossProduct[(A,B,C,D,E),(F,G,H,I,J,K,L,M,N,O,P,Q),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] {
def cross( l: TV[(A,B,C,D,E)], r: TV[(F,G,H,I,J,K,L,M,N,O,P,Q)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] = for { (a,b,c,d,e) <- l; (f,g,h,i,j,k,l,m,n,o,p,q) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
}
implicit def crosser17_6[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q] = new CrossProduct[(A,B,C,D,E,F),(G,H,I,J,K,L,M,N,O,P,Q),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] {
def cross( l: TV[(A,B,C,D,E,F)], r: TV[(G,H,I,J,K,L,M,N,O,P,Q)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] = for { (a,b,c,d,e,f) <- l; (g,h,i,j,k,l,m,n,o,p,q) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
}
implicit def crosser17_7[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q] = new CrossProduct[(A,B,C,D,E,F,G),(H,I,J,K,L,M,N,O,P,Q),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] {
def cross( l: TV[(A,B,C,D,E,F,G)], r: TV[(H,I,J,K,L,M,N,O,P,Q)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] = for { (a,b,c,d,e,f,g) <- l; (h,i,j,k,l,m,n,o,p,q) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
}
implicit def crosser17_8[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q] = new CrossProduct[(A,B,C,D,E,F,G,H),(I,J,K,L,M,N,O,P,Q),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] {
def cross( l: TV[(A,B,C,D,E,F,G,H)], r: TV[(I,J,K,L,M,N,O,P,Q)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] = for { (a,b,c,d,e,f,g,h) <- l; (i,j,k,l,m,n,o,p,q) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
}
implicit def crosser17_9[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q] = new CrossProduct[(A,B,C,D,E,F,G,H,I),(J,K,L,M,N,O,P,Q),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I)], r: TV[(J,K,L,M,N,O,P,Q)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] = for { (a,b,c,d,e,f,g,h,i) <- l; (j,k,l,m,n,o,p,q) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
}
implicit def crosser17_10[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J),(K,L,M,N,O,P,Q),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J)], r: TV[(K,L,M,N,O,P,Q)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] = for { (a,b,c,d,e,f,g,h,i,j) <- l; (k,l,m,n,o,p,q) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
}
implicit def crosser17_11[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K),(L,M,N,O,P,Q),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K)], r: TV[(L,M,N,O,P,Q)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] = for { (a,b,c,d,e,f,g,h,i,j,k) <- l; (l,m,n,o,p,q) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
}
implicit def crosser17_12[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L),(M,N,O,P,Q),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L)], r: TV[(M,N,O,P,Q)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] = for { (a,b,c,d,e,f,g,h,i,j,k,l) <- l; (m,n,o,p,q) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
}
implicit def crosser17_13[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L,M),(N,O,P,Q),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L,M)], r: TV[(N,O,P,Q)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] = for { (a,b,c,d,e,f,g,h,i,j,k,l,m) <- l; (n,o,p,q) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
}
implicit def crosser17_14[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L,M,N),(O,P,Q),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N)], r: TV[(O,P,Q)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] = for { (a,b,c,d,e,f,g,h,i,j,k,l,m,n) <- l; (o,p,q) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
}
implicit def crosser17_15[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O),(P,Q),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)], r: TV[(P,Q)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] = for { (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) <- l; (p,q) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
}
implicit def crosser17_16[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P),Q,(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)], r: TV[Q] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)] = for { (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) <- l; q <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q)
}
implicit def crosser18_1[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R] = new CrossProduct[A,(B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] {
def cross( l: TV[A], r: TV[(B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] = for { a <- l; (b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
}
implicit def crosser18_2[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R] = new CrossProduct[(A,B),(C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] {
def cross( l: TV[(A,B)], r: TV[(C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] = for { (a,b) <- l; (c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
}
implicit def crosser18_3[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R] = new CrossProduct[(A,B,C),(D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] {
def cross( l: TV[(A,B,C)], r: TV[(D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] = for { (a,b,c) <- l; (d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
}
implicit def crosser18_4[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R] = new CrossProduct[(A,B,C,D),(E,F,G,H,I,J,K,L,M,N,O,P,Q,R),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] {
def cross( l: TV[(A,B,C,D)], r: TV[(E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] = for { (a,b,c,d) <- l; (e,f,g,h,i,j,k,l,m,n,o,p,q,r) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
}
implicit def crosser18_5[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R] = new CrossProduct[(A,B,C,D,E),(F,G,H,I,J,K,L,M,N,O,P,Q,R),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] {
def cross( l: TV[(A,B,C,D,E)], r: TV[(F,G,H,I,J,K,L,M,N,O,P,Q,R)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] = for { (a,b,c,d,e) <- l; (f,g,h,i,j,k,l,m,n,o,p,q,r) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
}
implicit def crosser18_6[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R] = new CrossProduct[(A,B,C,D,E,F),(G,H,I,J,K,L,M,N,O,P,Q,R),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] {
def cross( l: TV[(A,B,C,D,E,F)], r: TV[(G,H,I,J,K,L,M,N,O,P,Q,R)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] = for { (a,b,c,d,e,f) <- l; (g,h,i,j,k,l,m,n,o,p,q,r) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
}
implicit def crosser18_7[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R] = new CrossProduct[(A,B,C,D,E,F,G),(H,I,J,K,L,M,N,O,P,Q,R),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] {
def cross( l: TV[(A,B,C,D,E,F,G)], r: TV[(H,I,J,K,L,M,N,O,P,Q,R)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] = for { (a,b,c,d,e,f,g) <- l; (h,i,j,k,l,m,n,o,p,q,r) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
}
implicit def crosser18_8[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R] = new CrossProduct[(A,B,C,D,E,F,G,H),(I,J,K,L,M,N,O,P,Q,R),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] {
def cross( l: TV[(A,B,C,D,E,F,G,H)], r: TV[(I,J,K,L,M,N,O,P,Q,R)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] = for { (a,b,c,d,e,f,g,h) <- l; (i,j,k,l,m,n,o,p,q,r) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
}
implicit def crosser18_9[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R] = new CrossProduct[(A,B,C,D,E,F,G,H,I),(J,K,L,M,N,O,P,Q,R),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I)], r: TV[(J,K,L,M,N,O,P,Q,R)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] = for { (a,b,c,d,e,f,g,h,i) <- l; (j,k,l,m,n,o,p,q,r) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
}
implicit def crosser18_10[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J),(K,L,M,N,O,P,Q,R),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J)], r: TV[(K,L,M,N,O,P,Q,R)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] = for { (a,b,c,d,e,f,g,h,i,j) <- l; (k,l,m,n,o,p,q,r) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
}
implicit def crosser18_11[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K),(L,M,N,O,P,Q,R),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K)], r: TV[(L,M,N,O,P,Q,R)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] = for { (a,b,c,d,e,f,g,h,i,j,k) <- l; (l,m,n,o,p,q,r) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
}
implicit def crosser18_12[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L),(M,N,O,P,Q,R),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L)], r: TV[(M,N,O,P,Q,R)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] = for { (a,b,c,d,e,f,g,h,i,j,k,l) <- l; (m,n,o,p,q,r) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
}
implicit def crosser18_13[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L,M),(N,O,P,Q,R),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L,M)], r: TV[(N,O,P,Q,R)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] = for { (a,b,c,d,e,f,g,h,i,j,k,l,m) <- l; (n,o,p,q,r) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
}
implicit def crosser18_14[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L,M,N),(O,P,Q,R),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N)], r: TV[(O,P,Q,R)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] = for { (a,b,c,d,e,f,g,h,i,j,k,l,m,n) <- l; (o,p,q,r) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
}
implicit def crosser18_15[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O),(P,Q,R),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)], r: TV[(P,Q,R)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] = for { (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) <- l; (p,q,r) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
}
implicit def crosser18_16[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P),(Q,R),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P)], r: TV[(Q,R)] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] = for { (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) <- l; (q,r) <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
}
implicit def crosser18_17[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R] = new CrossProduct[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q),R,(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] {
def cross( l: TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q)], r: TV[R] ): TV[(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R)] = for { (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q) <- l; r <- r } yield (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment