@ Pure public static < P1 , P2 , P3 > Procedure2 < P2 , P3 > curry ( final Procedure3 < ? super P1 , ? super P2 , ? super P3 > procedure , final P1 argument ) { if ( procedure == null ) throw new NullPointerException ( "procedure" ) ; return new Procedure2 < P2 , P3 > ( ) { @ Override public void apply ( P2 p2 , P3 p3 ) { procedure . apply ( argument , p2 , p3 ) ; } } ; }
Curries a procedure that takes three arguments .