F# - 文件中算法的组织

时间:2011-10-07 13:37:18

标签: f# namespace-organisation

我找不到组织各种算法的好方法。今天文件是这样的:

1 /从Excel中提取值

2 /基于这些值的第一种算法(从Excel中提取)以 “让matriceAlgo1 =”

3 /秒算法从相同的值开始 “让matriceAlgo2 =”

4 /综合算法,对2 /和3 /进行加权平均(取决于几个值)并选择要显示的结果。 “让matriceSynthesis =”

我的问题如下:我应该在此文件的不同部分之前放置什么才能通过名称来调用它们?我已经看到答案解释说模块可能是一个答案,但我不知道如何在我的情况下应用它(或者其他任何东西,如果它不是好的答案)。最后,我希望能够写出像这个:

“启动提取

启动第一算法

启动第二算法

启动综合“

1 个答案:

答案 0 :(得分:1)

我通常组织文件的方式是在文件的不同部分之间有一些清晰的可视分隔符(例如参见Crawler.fsx on GitHub),然后在末尾有一个“main”部分,它调用先前声明的函数。 / p>

我没有真正使用模块,除非我有大量具有冲突名称的函数。如果您的算法包含更多函数(例如Alg1.initializeAlg1.run等),则最好使用模块。然后,您可以使用模块别名轻松切换使用不同的算法:

module Alg = Alg1 // or Alg2

let a = Alg.initialize
Alg.run a

如果文件越来越长,那么您也可以将部分移动到单独的文件中,并使用#load "File.fs"从文件加载算法或函数。在这种情况下,您可能需要使用模块,但在加载文件后,您始终可以open模块。