Guest User

Untitled

a guest
Jul 19th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.46 KB | None | 0 0
  1. type Fn<A, B> = (a: A) => B;
  2.  
  3. function compose<A, B>(f1: Fn<A, B>): Fn<A, B>;
  4. function compose<A, B, C>(f1: Fn<B, C>, fn2: Fn<A, B>): Fn<A, C>;
  5. function compose<A, B, C, D>(
  6. fn1: Fn<C, D>,
  7. f2: Fn<B, C>,
  8. fn3: Fn<A, B>
  9. ): Fn<A, D>;
  10. function compose<A, B, C, D, E>(
  11. fn1: Fn<D, E>,
  12. fn2: Fn<C, D>,
  13. f2: Fn<B, C>,
  14. fn3: Fn<A, B>
  15. ): Fn<A, E>;
  16. function compose<A>(...fns: any[]) {
  17. return (a: A) =>
  18. fns.reverse().reduce((result, current) => current(result), a);
  19. }
Add Comment
Please, Sign In to add comment