Wie konvertiert man Mathematica-Ausdrücke richtig? verlustfrei in eine Zeichenkette (eine Zeichenkette, die im Speicher gehalten und nicht in eine Datei exportiert wird)?
Ich bin auf der Suche nach einer textlichen Darstellung, die
- bewahrt alle Informationen, einschließlich spezieller (und möglicherweise atomarer) Objekte, wie z. B.
SparseArray
,Graph
,Dispatch
,CompiledFunction
, usw. intakt. Z.B. Radfahren einSparseArray
durch diese Darstellung sollte sie spärlich bleiben (und nicht in eine normale Liste umgewandelt werden). - ist relativ schnell zu durchlaufen (hin und her konvertieren).
Ist ToString[expr, FullForm]
ausreichend dafür? Was ist mit ToString[expr, InputForm]
?
Anmerkung 1: Dieses Problem trat auf, als ich versuchte, einige Bugs in Graph
wo die interne Darstellung gelegentlich verfälscht wird. Aber ich bin an einer Antwort auf die obige allgemeine Frage interessiert.
Anmerkung 2: Save
wird dies sicherlich tun, aber es schreibt in Dateien (wahrscheinlich ist es möglich, dies mit Streams zu lösen), und es schreibt nur Definitionen, die mit Symbolen verbunden sind.