Возился с концепциями функционального программирования и наткнулся на запоминание.
Вот пример:
public static Func<T, TResult> Memoize<T, TResult>(this Func<T, TResult> f) {
var cache = new ConcurrentDictionary<T, TResult>();
return a => cache.GetOrAdd(a, f);
}
Как возвращаемая функция все еще имеет доступ к объекту словаря?