1 import std.stdio;
2
3 alias double delegate(double) fn;
4
5 fn derivative(fn f, double dx) {
6 double deriv(double x) {
7 return (f(x + dx) - f(x)) / dx;
8 };
9 return &deriv;
10 }
11
12 void main() {
13 double xcubed(double x) {
14 return x*x*x;
15 }
16
17 fn f = &xcubed;
18 auto df = derivative(f, 0.01);
19 writefln(df(1.0));
20 auto ddf = derivative(df, 0.01);
21 writefln(ddf(1.0));
22 }