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?


Reply via email to