|
Lieber Robert, Robert Nowak schrieb: > > Last/@cliste > Ist ja sehr gut, übersieht aber leider, daß die Werte ja zugewiesen werden sollten. Eberhardt war da schon schon auf der richtigen Fährte, nur hätte er "Set" und nicht "List" nehmen sollen. Ich habe ein kleines Programm watQ[] geschrieben, das sollte die Dinge in Zukunft vereinfachen. Wenn Sie die Regel stört, fragen sie einfach wat? In[1]:= Off[Rule::rhs] In[2]:= Clear[a, c, cc] In[3]:= cc={c[1]->"eins",{c[2]->"zwei"},"nanu?"} In[4]:= Attributes[ifSymbol]=HoldAll;Attributes[watQ]={HoldAll}; In[5]:= ifSymbol[x_Symbol]:=(Unevaluated[x]=DeleteCases[x,y_->y_,Infinity]) In[6]:= watQ[x_]:=(Block[{Rule=Set},x]; ifSymbol[Unevaluated[x]];) ^^^ das ist alles! In[7]:= watQ[cc] In[8]:= {c[1],c[2]} Out[8]= {"eins","zwei"} In[9]:= watQ[a->b] In[10]:= a Out[10]= b In[11]:= cc Out[11]= {{},"nanu?"} Wie Sie sehen, genügt es, den Ausdruck mit den Regeln in der richtigen Umgebung auch nur anzusehen, und schon hat alles seinen Wert! Der Rest ist Beiwerk, denn nachdem die Regeln angeguckt waren, sind sie natürlich verbraucht, und wat? wat? führte zu blöden Fehlermeldungen. Deshalb wurden anschließen einfach die (im weiteren nutzlosen) Regeln entfernt. Leider nimmt das jetzt der Lösung doch wieder jegliche Eleganz und sie kommt wohl nicht für einen der vorderen Plätze in Frage. Hartmut Wolf |