9

With C, I can write a program with a generic text editor (i.g. nano) and compile it in the Lunix terminal with

gcc mySum.c -o mySum

to get a window asking for inputs and returning the output.

#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;
}

Can I produce the same kind of program in F#, without Visual Studio/MonoDevelopment?

I found very instructive for me working with a nude text editor, like I am doing with C. It imposes me to be more concentrated on learning, with less help by the IDE. Furthermore, a text editor (such as nano, or notepad++ or whatever) provides more flexible tools than fsharpi to write the progra canm. In this way, when the program is completed, I give it to the compiler in the same way I did with C in the example.

I would say by implementing the function

let mySum x y =
    x + y

with

fsharpc mySum.fs

but I fail to get how to achieve it. I found this reference but it is a little advanced.

10

1 Answer 1

6

I think what you want is FSI (F# Interactive), which is called fsharpi on Linux / MacOS. You can also use fsharpc, which will compile it, but if you are just trying out, testing or scripting then the REPL environment that fsharpi gives you is probably more convenient.

An introduction for using it from Linux can be found here.

Note that you must at least have Mono installed before you can do anything with F# in Linux.

EDIT: As illustration, the program you mention in C can be expressed in a myriad of ways, here's one way (which assumes correct input, or exception, program not tested):

[<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: you edited your question and expressed your wish to work with "Nano". That is an editor that I don't know. You also say that you don't want to use Mono. I don't know why that is, unless you mean MonoDevelop, because without Mono you cannot compile a .NET program on Linux.

The command you mention, gcc mySum.c -o mySum can be translated into a commandline variant for F#. For instance (assuming same syntax as for fsc.exe) (put on multiple lines for clarity):

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 

Many of these options can possibly be left out, but this is a valid commandline, taken from Visual Studio.

I would, however, suggest to use an editor that is preconfigured to run F# programs, that has a REPL integrated, as well as a debugger, syntax coloring, live type information (very important!) and other intellisense features, which you get with Visual Studio (the VS Code edition runs on Linux and has an excellent editor, courtesy to Guy Coder for reminding me) and possibly some other F# enabled editors out there.

Sign up to request clarification or add additional context in comments.

7 Comments

Thanks for the answer, it helped me to better define the problem. I frequently use fsharpi. I would like to use the more flexible tools provided by a text editor, such as nano, to write the program. Once the program is completed, give it to the compiler in the same way I did with C.
Any text editor is ok, actually. Nano is just the one I use more often :)
@Worice, I see you edited your question. While I don't understand your motivation from not wanting to use Visual Studio or MonoDevelop, I have tried to give an example commandline (a bit more wielded than necessary perhaps).
It is an excellent example Abel, thank you. I am a newie coder. I just found very instructive for me working with a nude text editor, like I am doing with C. It imposes me to be more concentrated on learning, with less help by the IDE. Didactic purposes, I could say.
@Worice You should have, and should put that into the question. e.g I just found very instructive for me working with a nude text editor, like I am doing with C. It imposes me to be more concentrated on learning, with less help by the IDE.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.