Можно ли импортировать MX-файл без оценки содержимого?

Вопрос: Можно ли импортировать MX-файл, сохраненный с помощью DumpSave без оценки содержимого?


Проиллюстрирую:

Создадим переменную, data:

In[2]:= data = Range[10]

Out[2]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

Она может быть экспортирована в MX и импортирована из MX без каких-либо определений:

In[3]:= ImportString@ExportString[data, "MX"]

Out[3]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

Но что если мы используем DumpSave?

In[4]:= DumpSave["data.mx", data]

Out[4]= {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}}

(И очистить data)

In[5]:= Clear[data]

При повторном импорте ничего не возвращается:

In[6]:= Import["data.mx", {"MX", "HeldExpression"}]

Но переменная data снова становится определенной, как если бы мы использовали Get.

In[7]:= data

Out[7]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

Я ожидал получить что-то вроде Hold[data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}], т.е. что-то похожее на то, что будет записано в файл .m при использовании Save.


Возможно, технически невозможно избежать создания определения, поскольку DumpSave и Get напрямую манипулируют состоянием ядра, а не пишут и читают оцениваемое определение, как это делает Save? Это просто предположение.


(edit) please note: Я не пытаюсь сохранить таким образом, чтобы можно было импортировать "Held". Я уже могу сделать это, используя Export. Я пытаюсь импортировать ранее DumpSaved MX файлы вместо этого.


Ответ Похоже, что это невозможно сделать, если только MX-файл не был сохранен специально для этого.

7
задан Szabolcs 5 January 2012 в 15:09
поделиться