Skip to content

Instantly share code, notes, and snippets.

@alexeygolev
Created May 9, 2016 23:16
Show Gist options
  • Save alexeygolev/a962674897db31129aa08b6e7cc19e8f to your computer and use it in GitHub Desktop.
Save alexeygolev/a962674897db31129aa08b6e7cc19e8f to your computer and use it in GitHub Desktop.
flowtype compose
type ComposeFn<V0,V1,V2,T1,T2,T3,T4,T5,T6> =
& ( <V0,V1,V2,T1,T2,T3,T4,T5,T6>( fn5:(x: T5) => T6, fn4: (x: T4) => T5, fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1, x2: V2) => T1, $?: null) => (x0: V0, x1: V1, x2: V2) => T6 )
& ( <V0,V1,T1,T2,T3,T4,T5,T6>( fn5:(x: T5) => T6, fn4: (x: T4) => T5, fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1) => T1, $?: null) => (x0: V0, x1: V1) => T6 )
& ( <V0,T1,T2,T3,T4,T5,T6>( fn5:(x: T5) => T6, fn4: (x: T4) => T5, fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0) => T1, $?: null) => (x0: V0) => T6 )
& ( <V0,V1,V2,T1,T2,T3,T4,T5>( fn4: (x: T4) => T5, fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1, x2: V2) => T1, $?: null) => (x0: V0, x1: V1, x2: V2) => T5 )
& ( <V0,V1,T1,T2,T3,T4,T5>( fn4: (x: T4) => T5, fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1) => T1, $?: null) => (x0: V0, x1: V1) => T5 )
& ( <V0,T1,T2,T3,T4,T5>( fn4: (x: T4) => T5, fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0) => T1, $?: null) => (x0: V0) => T5 )
& ( <V0,V1,V2,T1,T2,T3,T4>( fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1, x2: V2) => T1, $?: null) => (x0: V0, x1: V1, x2: V2) => T4 )
& ( <V0,V1,T1,T2,T3,T4>( fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1) => T1, $?: null) => (x0: V0, x1: V1) => T4 )
& ( <V0,T1,T2,T3,T4>( fn3: (x: T3) => T4, fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0) => T1, $?: null) => (x0: V0) => T4)
& ( <V0,V1,V2,T1,T2,T3>( fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1, x2: V2) => T1, $?: null) => (x0: V0, x1: V1, x2: V2) => T3 )
& ( <V0,V1,T1,T2,T3>( fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1) => T1, $?: null) => (x0: V0, x1: V1) => T3 )
& ( <V0,T1,T2,T3>( fn2: (x: T2) => T3, fn1: (x: T1) => T2, fn0: (x0: V0) => T1, $?: null) => (x0: V0) => T3 )
& ( <V0,V1,V2,T1,T2>( fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1, x2:V2) => T1, $?: null) => (x0: V0, x1: V1, x2: V2) => T2 )
& ( <V0,V1,T1,T2>( fn1: (x: T1) => T2, fn0: (x0: V0, x1: V1) => T1, $?: null) => (x0: V0, x1: V1) => T2 )
& ( <V0,T1,T2>( fn1: (x: T1) => T2, fn0: (x0: V0) => T1, $?: null) => (x0: V0) => T2 )
& ( <V0,V1,V2,T1>( fn0: (x0: V0, x1: V1, x2: V2) => T1, $?: null) => (x0: V0, x1: V1, x2: V2) => T1 )
& ( <V0,V1,T1>( fn0: (x0: V0, x1: V1) => T1, $?: null) => (x0: V0, x1: V1) => T1 )
& ( <V0,T1>( fn0: (x0: V0) => T1, $?: null) => (x0: V0) => T1 )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment