-- Compose two functions, where each function is -- a script object with a call(x) handler. on compose(f, g) script on call(x) f's call(g's call(x)) end call end script end compose script increment on call(n) n + 1 end call end script script decrement on call(n) n - 1 end call end script script twice on call(x) x * 2 end call end script script half on call(x) x / 2 end call end script script cube on call(x) x ^ 3 end call end script script cuberoot on call(x) x ^ (1 / 3) end call end script set functions to {increment, twice, cube} set inverses to {decrement, half, cuberoot} set answers to {} repeat with i from 1 to 3 set end of answers to ¬ compose(item i of inverses, ¬ item i of functions)'s ¬ call(0.5) end repeat answers -- Result: {0.5, 0.5, 0.5}