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
> 

Что имеет смысл, если выбран порядок загрузки. Если я отправлю 2 строки из userdep.fsx, мне придется ссылаться на a в разных пространствах имен:

> 
[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 ответов

Другие вопросы по тегам