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