在FSI会话中获取开放命名空间和模块

时间:2011-01-03 00:50:34

标签: f# f#-interactive

有没有办法在FSI会话中检索打开的命名空间和模块列表?我正在玩打印F#引用的表达式,我希望能够区分应该完全打印的模块的值与不应该打印的模块的值。

1 个答案:

答案 0 :(得分:3)

我认为没有办法做到这一点。

fsi对象没有办法做到这一点,所以像这样的简单方法是行不通的。我相信在内部,信息​​存储在F#Interactive用于保持交互当前状态的FsiDynamicCompilerState记录中(您可以在源中的“fsi.fs”中找到它)。

不幸的是,我没有找到任何可用于访问此状态的静态属性 - 它保存为FsiDynamicCompiler中的一个字段,该字段在main函数中创建,并且不存储在其他任何位置。原则上,您可能希望能够通过堆栈跟踪访问实例(但我找不到获取堆栈帧的局部变量的方法)。

如果您想修改fsi.exe以使其成为可能,那将是另一个问题,但我想这不是您想要的。