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

mat*_*ser 1 f# f#-interactive

我有一个finit.fsx文件要在fsi.exe启动时加载,如:

#r xxxx
type xx = xxx
module Util = 
   let cd path = xxxx
   ...
Run Code Online (Sandbox Code Playgroud)

启动fsi.exe后,将其加载为

namespace FSI_0002
  module Util = begin
    val cd : string -> unit
  ...
  end
Run Code Online (Sandbox Code Playgroud)

问题是我该如何使用module util?我不能open Utilcd直接使用.为了进一步困扰我,如果我把一个命名空间放在顶行,比如namespace Test,在fsi.exe中,它被加载为

namespace FSI_0002.Test
  val cd : string -> unit
  ...
Run Code Online (Sandbox Code Playgroud)

在哪里Module Util?然后我必须open Test;;Util.cd.

有没有办法在F#启动脚本中定义模块并自动打开模块?谢谢.

Tom*_*cek 5

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

[<AutoOpen>]
module Main

let foo = 10
Run Code Online (Sandbox Code Playgroud)

当您接着#load文件时,该foo值应该在顶层可见.