如何导入F#

时间:2017-10-20 21:28:46

标签: import f#

我有一个名为Parser.fs的文件,文件顶部有module Parser。它汇编。我在同一目录Main中有另一个模块,如下所示:

module Main

open Parser

let _ = //do stuff

我尝试用Main.fs编译$ fsharpc Main.fs(如果有另一种编译方式,则为idk)。第一个错误是module or namespace 'Parser' is not defined,所有其他错误都是因为Parser中的函数不在范围内。

我不知道这是否重要,但我确实尝试在Main之后编译Parser,但它仍然无效。我做错了什么?

1 个答案:

答案 0 :(得分:3)

与Haskell不同,F#没有单独的编译。嗯,它在汇编级别,但不在模块级别。如果您希望两个模块位于同一个程序集中,则需要将它们一起编译:

fsharpc Parser.fs Main.fs

与Haskell的另一个不同之处:编译顺序很重要。如果你反转文件,它就不会编译。

或者,您可以将Parser编译为自己的程序集:

fsharpc Parser.fs -o:Parser.dll

然后在编译Main时引用该程序集:

fsharpc Main.fs -r:Parser.dll

那就是说,我建议使用fsproj项目文件(类似于cabal文件)。减少头痛,控制更多。