Re: why does DownValues not return all downvalues for a

*To*: mathgroup at smc.vnet.net*Subject*: [mg99421] Re: [mg99369] why does DownValues not return all downvalues for a*From*: Bob Hanlon <hanlonr at cox.net>*Date*: Tue, 5 May 2009 05:43:29 -0400 (EDT)*Reply-to*: hanlonr at cox.net

v = DeleteCases[ ToExpression[Names["*Values"]], SingularValues]; g["x"]["y"] = 1; {#, #[g]} & /@ v Bob Hanlon ---- Michael <michael2718 at gmail.com> wrote: ============= I'm trying to get the functionality of "associative arrays" or "alist" or "hash tables" to work in Mathematica. However I'm seeing a quirk and I wonder if anybody can explain what is going on or suggest a better approach? I can define a simple associate array like so: f["red"]=1; f["blue"]=2; ... If all my parameters are strings, then I can find the "keys" to my alist with the following function: StringKeys[y_] := DownValues[y] /. {( _[y[str_String]] :> _) -> str}; SetAttributes[StringKeys, HoldFirst]; In[141]:= StringKeys[f] Out[141]= {"blue", "red"} However, if I try to define a more complex alist, I cannot find any way to retrieve the definition! In[142]:= g["x"]["y"] = 1; In[143]:= DownValues[g] Out[143]= {} In[144]:= UpValues[g] Out[144]= {} Any ideas? Thanks, Michael