使用命令行在Linux中编译F#程序

用C语言,我可以用一个通用的文本编辑器(ig nano)编写一个程序,并用Lunixterminal编译它

gcc mySum.c -o mySum 

得到一个窗口要求input并返回输出。

 #include <stdio.h> int main(){ int x; int y; int sum; printf("Program that sums two numbers.\n\nPlease type the first one:\n"); scanf("%d", &x); printf("Type the second one:\n"); scanf("%d", &y); sum = x + y; printf("The sum of %d and %d is %d\n", x, y, sum); return 0; } 

在没有Visual Studio / MonoDevelopment的情况下,我可以在F#中生成相同types的程序吗?

我发现我用裸体文本编辑器工作非常有启发性,就像我正在用C做的一样。它使我更加专注于学习,而IDE的帮助更less。 此外,一个文本编辑器(如纳米,或记事本+ +或其他)提供了比fsharpi更多的灵活的工具来编写程序。 通过这种方式,当程序完成后,我将以与C中相同的方式将其交给编译器。

我会通过实现该function来说

 let mySum xy = x + y 

 fsharpc mySum.fs 

但我没有得到如何实现它。 我发现这个参考,但它有点高级。

我想你想要的是FSI(F#Interactive) ,在Linux / MacOS上称为fsharpi 。 你也可以使用fsharpc来编译它,但是如果你只是试用,测试或脚本,那么fsharpi给你的REPL环境可能更方便。

可以在这里找到从Linux使用它的介绍。

请注意,您必须先安装Mono,然后才能在Linux中使用F#进行任何操作。

编辑:作为例子,你在C中提到的程序可以用各种各样的方式来表达,这里有一种方法(假定正确的输入或者例外程序没有经过测试):

 [<EntryPoint>] let main argv = let scani() = printfn "Give a number: " Console.ReadLine() |> Int64.Parse let (x, y) = (scani(), scani()) printfn "The sum of %d and %d is %d" xy (x + y) // wait before returning prompt printfn "Hit any key to continue" Console.ReadKey() |> ignore 

编辑2:你编辑你的问题,并表示你的愿望与“纳米”的工作。 那是我不知道的编辑。 你也说你不想使用单声道。 我不知道这是为什么,除非你的意思是MonoDevelop,因为没有Mono,你不能在Linux上编译.NET程序。

您提到的命令gcc mySum.c -o mySum可以被转换成F#的命令行变体。 例如(假定与fsc.exe相同的语法)(为了清晰起见,放在多行上):

 fsharpc.exe -o:MyProgram.exe --debug:pdbonly --noframework --optimize+ --platform:anycpu32bitpreferred -r:"PathTo\FSharp.Core.dll" -r:"PathTo\mscorlib.dll" -r:"PathToYourReferencedOtherDlls\SomeClassLib.dll -r:"PathTo\System.Core.dll" -r:"PathTo\System.dll" --target:exe --warn:3 file1.fs file2.fs file3.fs 

许多这些选项可能被排除在外,但这是一个有效的命令行,取自Visual Studio。

不过,我会建议使用一个预编译来运行F#程序的编辑器,它具有集成的REPL,以及调试器,语法着色,实时类型信息(非常重要!)以及其他智能感知功能Visual Studio( VS Code版本在Linux上运行,并有一个出色的编辑器, Guy Coder提醒我),也可能有其他一些支持F#的编辑器。