MathGroup Archive 2009

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

Search the Archive

Re: why does DownValues not return all downvalues for a symbol?



Hi Michael,

definitions for a pattern of the form: f[..][..]:= ... are called SubValues.

Daniel



Michael 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: problems with DSolve
  • Next by Date: Re: INCLUDE A LEGEND IN A GRAPHIC
  • Previous by thread: Re: why does DownValues not return all downvalues for a symbol?
  • Next by thread: Re: why does DownValues not return all downvalues for a symbol?