Open
Description
Currently FEC stores the data in the nested lambda closure and then calls method Curry
to remove the closure from the lambda signature.
For example for nested Func<int>
the Curry is Func<int> Curry(Func<Closure, int> f, Closure c) => () => f(c)
. It means that Curry creates another closure over f and c.
To avoid that, we may store the f in c and use an extension method for closure to use the closure as target, e.g. T Closure.Func<T>(this Closure c) => c.f(c);
and use it as Func<int> f = c.Func<int>
which is not a valid C#.