import { Apply } from './types' ; name export const apply = function < A > ( list , f ? ) { if ( ! f ) return ( f ) => __apply ( list , f ) ; return __apply ( list , f ) ; } ; function __apply < A > ( list , f ) { switch ( list . length ) { case 0 : return f ( ) ; case 1 : return f ( list [ 0 ] ) ; case 2 : return f ( list [ 0 ] , list [ 1 ] ) ; case 3 : return f ( list [ 0 ] , list [ 1 ] , list [ 2 ] ) ; case 4 : return f ( list [ 0 ] , list [ 1 ] , list [ 2 ] , list [ 3 ] ) ; case 5 : return f ( list [ 0 ] , list [ 1 ] , list [ 2 ] , list [ 3 ] , list [ 4 ] ) ; default : return f . apply ( null , list ) ; } }