我有一个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
但是当我尝试执行上面的代码片段时,我得到了
我还注意到,InteractiveUtil模块的定义如下所示:
namespace FSI_0009
module InteractiveUtil = begin
val plotMe : c:FSharp.Charting.ChartTypes.GenericChart -> unit
val logMe : c:string -> unit
end
因此FSI_0009是fsi为我创建的。
知道如何解决这个问题吗?
最佳答案
好的,我知道了。当我将顶级模块放在fsx的开头时,它起作用了。
module InteractiveUtil
#time
#r ...
open FSharp.Charting
let plotMe (c : ChartTypes.GenericChart) = c.ShowChart() |> ignore
let logMe (c : string) = c |> printfn "%s"
我本来可以删除问题,但由于我已经获得一票赞成,因此似乎其他人也对解决方案感兴趣。
关于f# - 在FSI中加载F#模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27409266/