From b7c7662420f60a567c1b8602af8fb55d221f22ab Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Thu, 12 Jan 2017 11:28:46 +0000 Subject: [PATCH] Updated interning strings (markdown) --- interning-strings.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/interning-strings.md b/interning-strings.md index 121388c..e9934b3 100644 --- a/interning-strings.md +++ b/interning-strings.md @@ -24,7 +24,7 @@ will return the value that **froboz** is bound to in the root namespace; (eval foobar.froboz) -will return the value that **froboz** is bound to in a namespace which is the value of the name **foobar** in the current name namespace; and that +will return the value that **froboz** is bound to in a namespace which is the value of the name **foobar** in the current namespace; and that (eval .system.users.simon.environment.froboz) @@ -32,6 +32,8 @@ will return the value that **froboz** is bound to in the environment of the user The exact path separator syntax may change, but the principal that when interning a symbol it is broken down into a path of tokens, and that the value of each token is sought in a namespace bound to the previous token, is likely to remain. +Obviously if **froboz** is interned in one namespace it is not necessarily interned in another, and vice versa. There's a potentially nasty problem here that two lexically identical strings might be bound in different namespaces, so that there is not one canonical interned **froboz**; if this turns out to cause problems in practice there will need to be a separate canonical [[hashtable]] of individual path elements. + Obviously this means there may be arbitrarily many paths which reference the same data item. This is intended. ## Related functions