On Wednesday, 11 April 2012 at 12:19:06 UTC, Steven Schveighoffer wrote:
On Wed, 11 Apr 2012 08:08:44 -0400, Xan <xancor...@gmail.com> wrote:

On Wednesday, 11 April 2012 at 11:59:14 UTC, Jacob Carlborg wrote:

Use "delegate" or "function" both for the argument type and return type.


How to do that?

int function(int) g(int function(int a) p) { return p; }

Should do the trick.

delegates are not implicitly convertible to/from function pointers.

You can, however, explicitly convert a function to a delegate. But this should be done only when there is a requirement to use delegates.

However, use std.functional.toDelegate if you are interested.

-Steve


Thanks, Steve, but another problem:

$ gdmd-4.6 functions.d
functions.d:13: Error: function functions.f (int a) is not callable using argument types ()
functions.d:13: Error: expected 1 function arguments, not 0
functions.d:13: Error: function functions.g (int function(int) p) is not callable using argument types (int) functions.d:13: Error: cannot implicitly convert expression (f()) of type int to int function(int)


import std.functional, std.stdio;

int f (int a) {
|___return 2*a;
}

int function(int) g(int function(int a) p) {
|___return p;
}


void main() {
|___writeln(g(f)(1));
}


I want to g return f and then f evaluate 1.



Reply via email to