Получение открытых пространств имен и модулей в сеансе FSI - PullRequest
2 голосов
/ 03 января 2011

Есть ли способ получить список открытых пространств имен и модулей в сеансе FSI? Я играю с печатью выражения F # в кавычках, и я хотел бы иметь возможность различать те значения модуля, которые должны быть напечатаны полностью, с теми, которые не должны.

1 Ответ

3 голосов
/ 03 января 2011

Я не думаю, что есть способ сделать это.

Объект fsi не имеет никакого способа сделать это, поэтому такой простой подход не сработает. Я полагаю, что внутренне информация хранится в записи FsiDynamicCompilerState, которую F # Interactive использует для поддержания текущего состояния взаимодействия (вы можете найти ее в "fsi.fs" в источниках).

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

Если вы хотите изменить fsi.exe, чтобы сделать это возможным, это был бы другой вопрос, но я полагаю, это не то, что вы хотите.

...