2016-12-19 156 views
6

有了C,我可以写一个通用的文本编辑器(IG纳米)中的程序,并与编译F#程序的命令行

gcc mySum.c -o mySum 

编译它在LUNIX终端得到一个窗口,要求输入并返回输出。

#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#中生成相同类型的程序吗?

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

我将通过实施功能

let mySum x y = 
    x + y 

fsharpc mySum.fs 

说,但我过不了怎么去实现它。我发现this reference但它有点高级。

+1

您知道[Visual Studio Code](https://code.visualstudio.com/),它在Linux上运行,不会与Visual Studio混淆。请参阅[使用Ionide的Visual Studio代码中的F#入门](https://docs.microsoft.com/en-us/dotnet/articles/fsharp/tutorials/getting-started/getting-started-vscode) –

+0

@GuyCoder,我向你的回答添加了你的建议,谢谢。它是VS最准系统的版本,我从来没有用过它,但是我相信它是相当流行和优秀的,如果你只对编写代码感兴趣而且没有其他需要。 – Abel

+0

@Abel你应该考虑安装Visual Studio代码。对于快速到小型的项目,甚至F#以外的项目,例如JS,HTML,XML,json,[DOT](http://www.graphviz.org/doc/info/lang.html),Prolog,程序集,Markdown, OCaml和其他的东西,它是我的IDE。 –

回答

4

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

从Linux使用它的介绍can be found here

请注意,您必须先安装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" x y (x + y) 

    // wait before returning prompt 
    printfn "Hit any key to continue" 
    Console.ReadKey() |> ignore 

EDIT 2 :您编辑了您的问题并表达了您希望与“Nano”合作的愿望。那是我不知道的编辑。你也说你不想使用单声道。我不知道这是为什么,除非你的意思是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 edition runs on Linux,拥有出色的编辑器,Guy Coder提醒我)以及其他一些支持F#的编辑器。

+0

感谢您的回答,它帮助我更好地定义问题。我经常使用'fsharpi'。我想使用由纳米等文本编辑器提供的更灵活的工具编写程序。一旦程序完成后,以与C相同的方式将其交给编译器。 – Worice

+0

实际上,任何文本编辑器都可以。纳米只是我经常使用的那个:) – Worice

+0

@Worice,我看到你编辑了你的问题。尽管我不明白你从不想使用Visual Studio或MonoDevelop的动机,但我试图给出一个示例命令行(可能更多地使用它)。 – Abel