On Thursday, 1 February 2018 at 11:51:11 UTC, aliak wrote:
Is there a way to do this:
import std.stdio;
void main()
{
alias f = (a) => (b) => a * b;
f(2)(3).writeln;
}
The problem here is the outer lambda doesn't know what type the
inner lambda is. We can rewrite this a bit:
auto f(T)(T a) {
return b => a * b;
}
What type should this function return? Sure, it's possible to
define such a type:
auto f(T)(T a) {
struct Result {
auto opCall(T2)(T2 b) {
return a * b;
}
}
Result r;
return r;
}
However, that type is not a lambda, but a specialized type that
only does the right thing in some very special cases.
--
Simen