in a.fsx :
namespace na
module ma =
let var = 2
in b.fsx :
#load "a.fsx"
namespace nb
module mb =
let var = na.ma.var
in c.fsx :
#load "a.fsx"
namespace nc
module mc =
let var = na.ma.var
in userdep.fsx :
#load "b.fsx"
#load "c.fsx"
in user.fsx:
#load "userdep.fsx"
Now if I send that last instruction from within user.fsx to FSI, I get :
>
[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
>
Which makes sense if the load order decided is the one displayed. If I send the 2 lines from userdep.fsx, then I'd have to reference to a in different namespaces :
>
[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
>
Are there any principles to circumvent that behaviour you are aware of ?