Extracting the domain of a function, dynamic programming
- To: mathgroup at smc.vnet.net
- Subject: [mg8225] Extracting the domain of a function, dynamic programming
- From: John JOWETT <John.Jowett at cern.ch>
- Date: Tue, 19 Aug 1997 21:12:05 -0400
- Organization: CERN
- Sender: owner-wri-mathgroup at wolfram.com
--------------DA785FE9E40FF72720FAFD8D Hello, I would like to extract the set of values on which a function is defined. Consider the following toy example (to illustrate a situation I have while using dynamic programming): In[182]:= Clear[f] In[185]:= f[1]:=f1; f[2]:=f2; To find out about f, I can always do In[186]:= ?f Global`f f[1] := f1 f[2] := f2 However in my application, the values f1 and f2 are enormous expressions that I have to avoid appearing in my notebook (even if I allow them to print, it is quite hard to sift through the output cells looking for what I want). In any case I would like to get hold of this domain list and do other things with it. I would like something that returns just the list {1,2}, ie, the domain or set of values for which the function has been explicitly defined. I have tried In[188]:= DownValues[f] Out[188]= {HoldPattern[f[1]]\[RuleDelayed]f1,HoldPattern[f[2]]\[RuleDelayed]f2} and then In[189]:= First /@ DownValues[f] Out[189]= {HoldPattern[f[1]],HoldPattern[f[2]]} Then I can use Length[] to find out at least for how many cases f is defined but I have trouble extracting my domain (basically because attempts to dig deeper into the DownValues list always evaluate f[1] and f[2] at some point. I am sure that someone who really understands held expressions can help me ..... (I realise that I could simply accumulate an auxiliary list at each point where a new value is defined for f but that's not really satisfactory.) Thanks for any efforts, John Jowett -- ------------------------------------------------------------------------- ** Electronic mail: <John.Jowett at cern.ch> World Wide Web: http://wwwslap.cern.ch/~jowett/ Telephone: +41 (0)22 76 76643 (direct line and voice mail) Postal address: SL Division, CERN, CH-1211 Geneva 23, Switzerland Fax: +41 (0)22 76 78480 Location: Room 1-D18,Building 865, CERN Prevessin Site, France Secretaries: +41 (0)22 76 75272 or 75875 or 74571 ------------------------------------------------------------------------- --------------DA785FE9E40FF72720FAFD8D Content-Description: Card for John Jowett begin: vcard fn: John Jowett n: Jowett;John org: CERN adr: SL DIvision;;CERN;1211 Geneva 23 ;;;Switzerland email;internet: John.Jowett at cern.ch title: Dr tel;work: +41 22 767 6643 note: WWW: http://wwwslap.cern.ch/~jowett/ =0A= Telephone: +41 (0)22 76 76643 (direct line and voice mail) =0A= Postal address: SL Division, CERN, CH-1211 Geneva 23, =0A= Switzerland x-mozilla-cpt: ;0 x-mozilla-html: TRUE end: vcard --------------DA785FE9E40FF72720FAFD8D--