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
|