Я пытаюсь определить функцию в модуле, а затем сохранить определения функций в файл, используя DumpSave
.Однако перезагрузить функцию не удается.Вот минимальный пример
buildf[]:= Module[{res},
res[x_]:=x^2;
res
];
f=buildf[];
DumpSave["f.mx", f];
Clear[f];
Get["f.mx"]
Теперь я ожидал бы, что f
будет квадратной функцией, однако она останется неопределенной после оператора Clear
.Как я могу решить эту проблему?
Вопрос тесно связан с моим предыдущим вопросом несколько месяцев назад, но его решение здесь мне не поможет.
Любой намекприветствуется!
Обновление buildf
читает несколько файлов данных, преобразует их, определяет правила на их основе и вызывает Dispatch для быстрого поиска.Функция, возвращаемая buildf
, тогда является чем-то вроде API для данных.Я хочу избежать вызовов на buildf
и скорее загрузить двоичный дамп созданной функции данных.
Метод Save
кажется многообещающим, но он все еще не работает.Я постараюсь выделить проблему, чтобы воспроизвести ее здесь.
Окончательное обновление После комментария @Leonid о том, что уникальность локальных переменных не гарантируется для всех сессий, я решил использовать это«Механизм кэширования DumpSave» только для простых структур данных, но не для функций, зависящих от других символов.