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.