imemo2<A, B, R> function
Checks 2 arguments for equality with identical call and returns the cached result if they were not changed.
Implementation
Func2<A, B, R> imemo2<A, B, R>(Func2<A, B, R> func) {
late A prevArgA;
late B prevArgB;
late R prevResult;
bool isInitial = true;
return ((A argA, B argB) {
if (!isInitial && identical(argA, prevArgA) && identical(argB, prevArgB)) {
return prevResult;
} else {
prevArgA = argA;
prevArgB = argB;
prevResult = func(argA, argB);
isInitial = false;
return prevResult;
}
});
}