我有一个fsx文件,我用它来进行项目的交互式开发。它预加载了所有的dll,我想模拟一些在FSI世界中应该表现不同的函数。
在fsx中我有这段代码:
// #r needed dlls
open FSharp.Charting
module InteractiveUtil =
let plotMe (c : ChartTypes.GenericChart) = c.ShowChart() |> ignore
let logMe (c : string) = c |> printfn "%s"
现在我想玩的.fs文件中有这个:
#if INTERACTIVE
#load "LiveInvestigationPreload.fsx"
open InteractiveUtil
#endif
但是当我尝试执行上面的代码段时,我得到了
错误FS0039:命名空间或模块' InteractiveUtil'未定义
我还注意到InteractiveUtil模块的定义如下:
namespace FSI_0009
module InteractiveUtil = begin
val plotMe : c:FSharp.Charting.ChartTypes.GenericChart -> unit
val logMe : c:string -> unit
end
所以FSI_0009是fsi为我创造的东西。
知道怎么解决这个问题吗?
答案 0 :(得分:1)
好的,明白了。当我把顶级模块放在fsx的开头时,它起作用了。
module InteractiveUtil
#time
#r ...
open FSharp.Charting
let plotMe (c : ChartTypes.GenericChart) = c.ShowChart() |> ignore
let logMe (c : string) = c |> printfn "%s"
我会删除这个问题,但由于我已经投了一票,似乎其他人对解决方案感兴趣。