Как лучше всего прочитать код уже определенного функция (особенно из контекста System`)?

Иногда нам нравится смотреть, как определены определенные функции System` (когда они написаны в системе Mathematica). Этот вопрос о том, как лучше всего это сделать.

Следует иметь в виду:

  • Конечно ReadProtected необходимо сначала удалить.

  • Встроенные модули обычно необходимо использовать хотя бы один раз, прежде чем они будут загружены в ядро. Обычно для этого достаточно одного простого вызова, если они имеют расширенную функциональность (например,через параметры)?

  • Информация ( ?? ) дает определение в трудночитаемом формате (без отступов, и все имена частных контекстов добавлены к началу). Как лучше всего избавиться от имен контекстов и получить отформатированный код?

    Одна из идей избавления от определенных контекстов - это Блок [{$ ContextPath = Append [$ ContextPath, "SomeContext`Private`») ], Информация [символ]] . Код можно автоматически форматировать с помощью Workbench. Некоторые проблемы остаются, например Информация не цитирует строки, что предотвращает копирование кода в Workbench.

В общем, меня интересует, как люди это делают, какие методы они используют, чтобы сделать код встроенных функций максимально легким для чтения.

Пример использования: например, недавно я покопался в коде RunThrough , когда обнаружил, что он просто не работает в Windows XP (оказывается, он не цитирует имена временных файлов, когда путь к ним содержит пробелы).


Обновление: Похоже , что раньше существовала функция для печати определений без добавления контекста, Developer`ContextFreeForm , но она больше не работает в новых версиях.

6
задан Szabolcs 23 December 2011 в 13:12
поделиться