[plt-scheme] Does the procedure know who called it and how manytimes?
Chongkai Zhu wrote:
>>
>
> Why do you need that? "Continuation Marks" is the closest thing I can
> think of. But if a function `foo' calls your `f' in tail position, the
> continuation mark of `foo' won't be available. Besides, the function
> calls you can install whatever mark they want.
>
> Chongkai
>
Let us imagine I have large tree data structure of nodes and I want to
calculate the SIZE of the subtree for some node. I can do it easily with
some recursive function.
Now, my data structure is not the tree but it is more general graph.
Using the same recursive procedure, there is a lot of redundancy. I can
avoid that redundancy if I implement some kind of memoization of the
SIZE and store values in some hash-table, or much better in the special
field in the nodes of the graph. In both cases, I need to know whether
procedure is called by itself (and then obey existing memoization) or it
is called by some other function (and then initiate new memoization.)
There are few ways it can be done, for example, to define two
procedures, SIZE and SIZE-PRIVATE (called only from SIZE), but it is
certainly less elegant approach.