double acos (double d) { return Math.acos(d); } double asin (double d) { return Math.asin(d); } double cos (double d) { return Math.cos(d); } double sin (double d) { return Math.sin(d); } double croot (double d) { return Math.pow(d, 1/3); } double cube (double x) { return x * x * x; } Var compose (Var f, Var g, double x) { Func ff = f; Func fg = g; return ff(fg(x)); } void button1_onClick (Widget widget) { Array arr1 = [ sin, cos, cube ]; Array arr2 = [ asin, acos, croot ]; str s; for (int i = 1; i <= 3; i++) { s << compose(arr1.get(i), arr2.get(i), 0.5) << str.newline; } label1.setText(s); }