модуль в интерактивном файле запуска F # - PullRequest
1 голос
/ 21 мая 2011

У меня есть файл finit.fsx для загрузки при запуске fsi.exe, например:

#r xxxx
type xx = xxx
module Util = 
   let cd path = xxxx
   ...

После запуска fsi.exe он загружается как

namespace FSI_0002
  module Util = begin
    val cd : string -> unit
  ...
  end

Проблемакак я могу использовать module util?Я не могу open Util или использовать cd напрямую.Чтобы еще больше озадачить меня, если я поставлю пространство имен в верхней строке, например namespace Test, в fsi.exe оно будет загружено как

namespace FSI_0002.Test
  val cd : string -> unit
  ...

Где находится Module Util?Я тогда должен open Test;; тогда Util.cd.

Есть ли способ определить модуль в скрипте запуска F # и автоматически открыть модуль?Благодарю.

Ответы [ 2 ]

5 голосов
/ 21 мая 2011

Я полагаю, что вы можете явно указать, что весь код в файле .fsx находится в каком-то модуле (скажем, Main), и добавить атрибут AutoOpen в модуль:

[<AutoOpen>]
module Main

let foo = 10

КогдаЗатем вы #load файл, значение foo должно быть видно на верхнем уровне.

2 голосов
/ 21 мая 2011
[<AutoOpen>]
module Util = 
   let cd path = ...
...