2016-12-19 96 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