public static < T1 , T2 , R > Function2 < T1 , T2 , R > memoizeBiFunction ( final BiFunction < T1 , T2 , R > fn ) { Function1 < Tuple2 < T1 , T2 > , R > memoise2 = memoizeFunction ( ( final Tuple2 < T1 , T2 > pair ) -> fn . apply ( pair . _1 ( ) , pair . _2 ( ) ) ) ; return ( t1 , t2 ) -> memoise2 . apply ( tuple ( t1 , t2 ) ) ; }
Convert a BiFunction into one that caches it s result