Need help with calling a list of functions

Paul Backus snarwin at gmail.com
Sun Nov 4 04:29:11 UTC 2018


On Sunday, 4 November 2018 at 01:17:01 UTC, Luigi wrote:
> I need to call a function that can create a function from an 
> array of functions and calls them in reverse order.  I am 
> learning D any help would be
>
>
> import std.stdio;
> import std.algorithm;
> import std.array : array;
> import std.range;
>
> auto comp(T)(T function(T) [] list) pure {
>     auto backwards = retro(funs);
>     return <<HEre is where I think I need some help in calling 
> the list of functions with a delegate and fold or reduce>>;
> }
>
> void main()
> {
>     auto fun = comp([(real x)=>a/3.0,(real x)=>x*x,(real 
> x)=>x+1.0]);
>     writeln(fun(2.0));                // should print 3
> }

Use recursion:

T delegate(T) comp(T)(T function(T) [] list) pure {
     if (list.length == 1)
         return (T arg) => list[0](arg);
     else
         return (T arg) => list[0](comp(list[1 .. $])(arg));
}


More information about the Digitalmars-d-learn mailing list