使用C,我可以使用通用文本编辑器(例如nano)编写程序,并使用
在Lunix终端中编译它gcc mySum.c -o mySum
获取一个窗口询问输入并返回输出。
#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
更灵活的工具来编写程序。通过这种方式,当程序完成时,我将它以与我在示例中使用C相同的方式将其提供给编译器。
我会说通过实现函数
let mySum x y =
x + y
带
fsharpc mySum.fs
但我没有得到如何实现它。我发现this reference但它有点先进。
答案 0 :(得分:4)
我认为您想要的是FSI (F# Interactive),在Linux / MacOS上称为fsharpi
。您也可以使用fsharpc
来编译它,但如果您只是尝试,测试或编写脚本,那么fsharpi
给您的REPL environment可能会更方便。
从Linux can be found here使用它的简介。
请注意,在Linux中使用F#执行任何操作之前,必须至少安装Mono。
编辑:举例来说,你在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
编辑2:您编辑了您的问题并表示您希望使用“Nano”。这是一个我不知道的编辑。你还说你不想使用Mono。我不知道为什么会这样,除非你的意思是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#的编辑器。