Иногда нам нравится смотреть, как определены определенные функции System`
(когда они написаны в системе Mathematica). Этот вопрос о том, как лучше всего это сделать.
Следует иметь в виду:
Конечно ReadProtected
необходимо сначала удалить.
Встроенные модули обычно необходимо использовать хотя бы один раз, прежде чем они будут загружены в ядро. Обычно для этого достаточно одного простого вызова, если они имеют расширенную функциональность (например,через параметры)?
Информация
( ??
) дает определение в трудночитаемом формате (без отступов, и все имена частных контекстов добавлены к началу). Как лучше всего избавиться от имен контекстов и получить отформатированный код?
Одна из идей избавления от определенных контекстов - это Блок [{$ ContextPath = Append [$ ContextPath, "SomeContext`Private`») ], Информация [символ]]
. Код можно автоматически форматировать с помощью Workbench. Некоторые проблемы остаются, например Информация
не цитирует строки, что предотвращает копирование кода в Workbench.
В общем, меня интересует, как люди это делают, какие методы они используют, чтобы сделать код встроенных функций максимально легким для чтения.
Пример использования: например, недавно я покопался в коде RunThrough
, когда обнаружил, что он просто не работает в Windows XP (оказывается, он не цитирует имена временных файлов, когда путь к ним содержит пробелы).
Обновление: Похоже , что раньше существовала функция для печати определений без добавления контекста, Developer`ContextFreeForm
, но она больше не работает в новых версиях.