Differences between lambda function and regular functions in higher order functions

steve stevethe1st at gmail.com
Mon Feb 21 10:04:16 UTC 2022

I am trying to implement a simple map function. I found code to 
do this in another post but it only seems to work with lambda 
functions and I do not understand why. Any help would be greatly 

import std.stdio;

T[] map_vals(T,S)(scope T function(S) f, S[] a){
     auto b = new T[a.length];
     foreach(i,x;a) b[i] = f(x);
     return b;

auto timestwo(float x) {
     return 2*x;

void main(){
     float[] my_array = [1., 2., 3.];
     auto ff = (float x)=>2*x;

     // This works
     writeln(map_vals(ff, my_array));

     // this does not
     // writeln(map_vals(timestwo, my_array));

More information about the Digitalmars-d-learn mailing list