【发布时间】:2011-08-30 22:53:08
【问题描述】:
FSI 能否很好地处理多模块/文件 F# 项目? 考虑以下项目:
module.fs:
module Xyz
let add x y = x + y
Program.fs:
module Program
open Xyz
let result = add 1 2
选择并运行Program.fs 的最后两行将产生以下 FSI 错误:
Program.fs: error FS0039: The namespace or module 'Xyz' is not defined
这里有什么问题?
所以,假设我有以下项目结构:
A.fs
B.fs
C.fs
D.fs
E.fs
我想运行E.fs的一些功能。 E.fs 使用所有其他 .fs 文件,所以我为每个文件都有一个 open。如果以后我还想从任何其他文件中运行一些代码,我将不得不对之前不是 #loaded 的任何文件重复该过程。
根据您的建议,似乎要让我的 E.fs 文件在 FSI 上运行,我要么必须创建一个单独的 .fsx 文件,要么有一个单独的
#if INTERACTIVE
#load "..."
对于我将使用的每个模块,这在 IMO 中是非常多余的。我在这里遗漏了什么,还是这明显违反了 KISS 和 DRY 原则?
【问题讨论】: