F#交互式启动文件中的模块

时间:2011-05-20 21:18:18

标签: f# f#-interactive

我有一个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 个答案:

答案 0 :(得分:5)

我相信您可以明确指定.fsx文件中的所有代码都在某个模块中(例如,Main)并将AutoOpen属性添加到模块中:

[<AutoOpen>]
module Main

let foo = 10

当您#load文件后,foo值应显示在顶层。

答案 1 :(得分:2)

[<AutoOpen>]
module Util = 
   let cd path = ...