2016-09-26 57 views
2

这可能是一个简单的问题,但我把它作为一个问题发布,因为我无法弄清楚。在这里可能有一个重复的地方在stackoverflow,但我找不到任何。我正在使用Visual Studio代码在ubuntu上编写代码。如何在ubuntu上编译这段代码?

这是我test.fs文件的内容:

open System 
(*print*) 

let main() = 
    Console.WriteLine("hello") 

main() 

我想编译它在终端上。我知道编译器就在那里,因为我可以从它运行一个交互式的F#会话。我得到这个错误对于每一行(4)

error: expected class or object definition 

这使我相信,这是一个命名空间/包的问题,​​我相信这是在F#的模块。然而,我发现这个(https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/modules):“代码文件不是以顶层模块声明或命名空间声明开始,文件的全部内容(包括任何本地模块)都成为隐式创建的顶级模块的一部分与文件具有相同的名称,没有扩展名,第一个字母转换为大写。“

因此,它不应该被声明为一个模块。不过,我也尝试过,没有任何成功。

那么有人可以帮助我什么可能是错误原因?

还可以进一步帮助我如何让这个编译正确?

+0

如果你没有得到帮助,你也可以试试askubuntu。 – GhostCat

+0

感兴趣的:你知道吗,你可以在没有使用虚拟机的情况下在Windows 10上使用Ubuntu bash来做F#(使用单声道)。请参阅:[在Windows上的Ubuntu上的Bash](https://msdn.microsoft.com/zh-cn/commandline/wsl/about)。 –

回答

4

您似乎在fsharp之前调用了名为fsc的scala编译器 - 有关该错误消息的问题(例如,请参阅此处的error: expected class or object definition),该问题不是来自F#编译器的错误消息。

在Linux上,F#编译器在许多发行版上被称为fsharpc以避免此问题。