Skip to content

Instantly share code, notes, and snippets.

@joshcough
Created August 8, 2012 17:18
Show Gist options
  • Save joshcough/3296766 to your computer and use it in GitHub Desktop.
Save joshcough/3296766 to your computer and use it in GitHub Desktop.
wall of code
/** 22-way sum writer */
def s22W[A0,F0,A1,F1,A2,F2,A3,F3,A4,F4,A5,F5,A6,F6,A7,F7,A8,F8,A9,F9,A10,F10,A11,F11,A12,F12,A13,F13,A14,F14,A15,F15,A16,F16,A17,F17,A18,F18,A19,F19,A20,F20,A21,F21,R](w0: Writer[A0,F0], w1: Writer[A1,F1], w2: Writer[A2,F2], w3: Writer[A3,F3], w4: Writer[A4,F4], w5: Writer[A5,F5], w6: Writer[A6,F6], w7: Writer[A7,F7], w8: Writer[A8,F8], w9: Writer[A9,F9], w10: Writer[A10,F10], w11: Writer[A11,F11], w12: Writer[A12,F12], w13: Writer[A13,F13], w14: Writer[A14,F14], w15: Writer[A15,F15], w16: Writer[A16,F16], w17: Writer[A17,F17], w18: Writer[A18,F18], w19: Writer[A19,F19], w20: Writer[A20,F20], w21: Writer[A21,F21])
(f: (A0 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A1 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A2 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A3 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A4 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A5 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A6 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A7 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A8 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A9 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A10 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A11 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A12 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A13 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A14 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A15 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A16 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A17 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A18 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A19 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A20 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]], A21 => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]) => R => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]])
= new Writer[R,S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]] {
def bind(o: Sink): R => EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]] = {
val bindw0 = { val b = w0.bind(o); ((a: A0) => { o(0:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw1 = { val b = w1.bind(o); ((a: A1) => { o(1:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw2 = { val b = w2.bind(o); ((a: A2) => { o(2:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw3 = { val b = w3.bind(o); ((a: A3) => { o(3:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw4 = { val b = w4.bind(o); ((a: A4) => { o(4:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw5 = { val b = w5.bind(o); ((a: A5) => { o(5:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw6 = { val b = w6.bind(o); ((a: A6) => { o(6:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw7 = { val b = w7.bind(o); ((a: A7) => { o(7:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw8 = { val b = w8.bind(o); ((a: A8) => { o(8:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw9 = { val b = w9.bind(o); ((a: A9) => { o(9:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw10 = { val b = w10.bind(o); ((a: A10) => { o(10:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw11 = { val b = w11.bind(o); ((a: A11) => { o(11:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw12 = { val b = w12.bind(o); ((a: A12) => { o(12:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw13 = { val b = w13.bind(o); ((a: A13) => { o(13:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw14 = { val b = w14.bind(o); ((a: A14) => { o(14:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw15 = { val b = w15.bind(o); ((a: A15) => { o(15:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw16 = { val b = w16.bind(o); ((a: A16) => { o(16:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw17 = { val b = w17.bind(o); ((a: A17) => { o(17:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw18 = { val b = w18.bind(o); ((a: A18) => { o(18:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw19 = { val b = w19.bind(o); ((a: A19) => { o(19:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw20 = { val b = w20.bind(o); ((a: A20) => { o(20:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
val bindw21 = { val b = w21.bind(o); ((a: A21) => { o(21:Byte); b(a).asInstanceOf[EffectW[S22[F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21]]] }) }
f(bindw0, bindw1, bindw2, bindw3, bindw4, bindw5, bindw6, bindw7, bindw8, bindw9, bindw10, bindw11, bindw12, bindw13, bindw14, bindw15, bindw16, bindw17, bindw18, bindw19, bindw20, bindw21)
}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment