On Wednesday, 11 April 2012 at 11:59:14 UTC, Jacob Carlborg wrote:
On 2012-04-11 13:10, Xan wrote:
Hi,
Following the thread of Higher-order functions, how can I do
to pass a
function as a parameter and return a function. That is a
something like:
import std.functional, std.stdio;
int f (int a) {
return 2*a;
}
int delegate (int) g(int function(int a) p) {
return p;
}
void main() {
writeln(g(f)(1));
}
but it gives me:
$ gdmd-4.6 functions.d
functions.d:8: Error: cannot implicitly convert expression (p)
of type
int function(int a) to int delegate(int)
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
a) p) is
not callable using argument types (int)
functions.d:13: Error: cannot implicitly convert expression
(f()) of
type int to int function(int a)
Use "delegate" or "function" both for the argument type and
return type.
How to do that?