Without being able to call pure functions within pure functions, what use is this beyond the trivial simple examples? Couldn't it be possible to pass a "this" argument as the current JSON node and have it traverse the tree or something? For example:
{
"math": {
"sin": function(x) {...}
},
"numerics": {
"sin2": function(x) {
return this.parent.math.sin(x)
},
"parent": [automatically inserted by parser]
}
}