FSI和加载顺序

时间:2013-03-17 15:48:12

标签: f# f#-interactive fsi

在a.fsx中

namespace na 
module ma = 
    let var = 2
b.fsx中的

#load "a.fsx"
namespace nb
module mb = 
    let var = na.ma.var

在c.fsx中:

#load "a.fsx"
namespace nc
module mc = 
    let var = na.ma.var

在userdep.fsx中:

#load "b.fsx"
#load "c.fsx"

在user.fsx中:

#load "userdep.fsx"

现在,如果我将最后一条指令从user.fsx发送到FSI,我得到:

> 
[Loading \\psf\home\Documents\Visual Studio 11\Projects\Library3\Library3\b.fsx
 Loading \\psf\home\Documents\Visual Studio 11\Projects\Library3\Library3\a.fsx
 Loading \\psf\home\Documents\Visual Studio 11\Projects\Library3\Library3\c.fsx
 Loading \\psf\home\Documents\Visual Studio 11\Projects\Library3\Library3\userdep.fsx]


b.fsx(6,15): error FS0039: The namespace or module 'na' is not defined
> 

如果确定的加载顺序是显示的加载顺序,那么这是有意义的。 如果我从userdep.fsx发送2行,那么我必须引用不同名称空间中的一行:

> 
[Loading \\psf\home\Documents\Visual Studio 11\Projects\Library3\Library3\a.fsx
 Loading \\psf\home\Documents\Visual Studio 11\Projects\Library3\Library3\b.fsx]

namespace FSI_0002.na
  val var : int


namespace FSI_0002.nb
  val var : int

[Loading \\psf\home\Documents\Visual Studio 11\Projects\Library3\Library3\a.fsx
 Loading \\psf\home\Documents\Visual Studio 11\Projects\Library3\Library3\c.fsx]

namespace FSI_0003.na
  val var : int


namespace FSI_0003.nc
  val var : int

> 

是否有任何原则可以规避您所知道的行为?

0 个答案:

没有答案