drab wrote:A corollary of running anonymously is that if a command function does ⎕nl 3, it will not find itself in the list.
This is what Namespaces provide. There is already mechanism to do this via ##.name
; however, I don't have a way for the end user to create a Namespace, so its usage is limited to certain Magic Functions for which I have created a separate Hash and Symbol Table . The System Level syntax of ##.var
looks up to the next level of Namespace for the name reference to var
executes the function in the next level up Namespace. In a Magic Function, this allows it to access a value upstream as well as retrieve (say) the ⎕CR
of a function without conflicting with the local names in the Magic Function.
Note that Namespaces are not the same as function levels. They are a separate linked list in a separate chain.