public static java . util . function . Function < Identifier , SyntacticItem > removeFromBinding ( java . util . function . Function < Identifier , SyntacticItem > binding , Tuple < Identifier > variables ) { return ( Identifier var ) -> { // Sanity check whether this is a variable which is being removed for ( int i = 0 ; i != variables . size ( ) ; ++ i ) { if ( var . equals ( variables . get ( i ) ) ) { return null ; } } // Not being removed, reuse existing binding return binding . apply ( var ) ; } ; }
Construct a binding function from another binding where a given set of variables are removed . This is necessary in situations where the given variables are captured .