¿Cuál es la forma correcta de convertir las expresiones de Mathematica sin pérdidas en una cadena (una cadena guardada en la memoria, no exportada a un archivo)?Preservar expresiones de Mathematica en una forma textual
Busco a una representación textual que
- preservará toda la información, incluyendo el mantenimiento de los objetos especiales (y posiblemente atómicas), como
SparseArray
,Graph
,Dispatch
,CompiledFunction
, etc. intacta. P.ej. ciclar unSparseArray
a través de esta representación debe mantenerlo disperso (y no convertirlo a una lista normal). - es relativamente rápido para pasar de un ciclo a otro (convertir de ida y vuelta).
¿Es ToString[expr, FullForm]
suficiente para esto? ¿Qué hay de ToString[expr, InputForm]
?
Nota 1: Esto surgió al intentar solucionar algunos errores en Graph
donde la representación interna se corrompe ocasionalmente. Pero estoy interesado en una respuesta a la pregunta general anterior.
Nota 2: Save
seguramente hará esto, pero escribe en los archivos (probablemente sea posible resolver esto usando flujos), y solo escribe definiciones asociadas con símbolos.
No entiendo lo que estás tratando de hacer. ¿Simplemente desea "guardar" una expresión para restaurarla más tarde, o va a procesar la cadena? –
Solo guarde y restaure. En este caso particular, solucione los errores como https://groups.google.com/d/topic/comp.soft-sys.math.mathematica/RRsfrHCjwRM/discussion. La solución de Leonid es probablemente la mejor. – Szabolcs
Ese error se ve mal. ¿Funciona el guardar en otro símbolo? 'jjHold = jj; IsomorphicGraphQ [jj, ... ' –