├── README ├── clambda0.c ├── clambda1.c └── clambda2.c /README: -------------------------------------------------------------------------------- 1 | Simple examples of "lambdas" for C -- while there are some limitations, 2 | they work well enough. 3 | -------------------------------------------------------------------------------- /clambda0.c: -------------------------------------------------------------------------------- 1 | // Example without lambda 2 | #include 3 | 4 | 5 | float thelist[]={ 3.141, 6.02, 42.0, 0.7 }; 6 | 7 | // Find average of 2X 8 | float average2x(void) 9 | { 10 | int i,n=sizeof(thelist)/sizeof(thelist[0]); 11 | float avg=0.0; 12 | for (i=0;i 3 | 4 | 5 | float thelist[]={ 3.141, 6.02, 42.0, 0.7 }; 6 | 7 | 8 | float average_apply(float (*fn)(float inp)) 9 | { 10 | int i,n=sizeof(thelist)/sizeof(thelist[0]); 11 | float avg=0.0; 12 | for (i=0;i 3 | 4 | 5 | float thelist[]={ 3.141, 6.02, 42.0, 0.7 }; 6 | 7 | #define lambda(lambda$_ret, lambda$_args, lambda$_body)\ 8 | ({\ 9 | lambda$_ret lambda$__anon$ lambda$_args\ 10 | lambda$_body\ 11 | &lambda$__anon$;\ 12 | }) 13 | 14 | 15 | float average_apply(float (*fn)(float inp)) 16 | { 17 | int i,n=sizeof(thelist)/sizeof(thelist[0]); 18 | float avg=0.0; 19 | for (i=0;i