MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: why does DownValues not return all downvalues for a


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




  • Prev by Date: Re: Bug with Hypergeometric2F1?
  • Next by Date: Re: problems with DSolve
  • Previous by thread: Re: Correcting a typing blunder
  • Next by thread: Re: Re: text book style sheets