On Tuesday, 17 July 2012 at 22:13:13 UTC, Eyyub wrote:
On Tuesday, 17 July 2012 at 16:56:17 UTC, angel wrote:
I propose to introduce a reference to the current function, much like 'this' in a class method. Call it 'self' or 'thisFunc', or whatever ...
What might this be good for ?
For implementing recursion in a lambda function. Writing in functional style, one creates many functions, and looking for reasonable names for these functions becomes unnecessarily painful.

Good idea !
"self" is a cute keyword, or "lambda" but this could break existing code.

Mmm.. Why not an inner function to represent the recursive function? True a 'self' reference may resolve the issue, and be syntactical sugar..

  auto f = function int(int x) {
    //real function body
    void self(int y) {
      if(y) {
        inner(y-1);
        x++;
      }
    }

    self(x); //double x
    self(x); //double it again
    return x;
  }; //end of f declaration

  writeln(10);
  writeln(f(10)); //10*4


Mmm But using it as a shell although may work wouldn't be useful for a simple lambda anymore would it? Who knows, perhaps 'this' will extend to lambda's referencing itself.

Using CTFE you could rebuild and get something similar to that, or a template function... Hmmmm... Something to think on...

Reply via email to