2016-12-19 20 views
6

С С, я могу написать программу с общим текстовым редактором (Ig нано) и скомпилировать его в терминале Lunix сCompile F # программа в Linux с помощью командной строки

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

Можно ли создать такую ​​же программу в F #, без Visual Studio/MonoDevelopment?

Мне было очень поучительно работать с текстовым редактором ню, например, я делаю это с C. Это налагает на меня большую заинтересованность в обучении, с меньшей помощью со стороны IDE. Кроме того, текстовый редактор (например, nano или notepad ++ или что-то другое) предоставляет более гибкие инструменты, чем fsharpi, чтобы написать progra canm. Таким образом, когда программа завершена, я передаю ее компилятору так же, как и в примере C.

Я хотел бы сказать, реализуя функции

let mySum x y = 
    x + y 

с

fsharpc mySum.fs 

, но я не понимаю, как достичь этого. Я нашел this reference, но он немного продвинулся.

+1

Знаете ли вы [код Visual Studio] (https://code.visualstudio.com/), который работает в Linux и не следует путать с Visual Studio. См. [Начало работы с F # в коде Visual Studio с помощью Ionide] (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), который называется fsharpi на Linux/MacOS. Вы также можете использовать fsharpc, который скомпилирует его, но если вы просто пытаетесь, тестируете или создаете скрипты, то REPL environment, который дает вам fsharpi, вероятно, более удобен.

Введение для использования Linux can be found here.

Обратите внимание, что вы должны установить Mono, прежде чем сможете что-либо сделать с F # в Linux.

EDIT: В качестве иллюстрации, программа вы упоминаете в 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 : вы отредактировали свой вопрос и выразили желание работать с «Нано». Это редактор, которого я не знаю. Вы также говорите, что не хотите использовать Mono. Я не знаю, почему это так, если вы не имеете в виду MonoDevelop, потому что без Mono вы не можете скомпилировать .NET-программу на Linux.

Команда, указанная вами, 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, а также отладчик, синтаксическую раскраску, информацию о живом типе (очень важно!) и другие функции intellisense, которые вы получаете с Visual Studio (VS Code edition runs on Linux), и имеет отличный редактор, любезно предоставленный Guy Coder для напоминания мне) и, возможно, некоторые другие редакторы, поддерживающие F #.

+0

Спасибо за ответ, это помогло мне лучше определить проблему. Я часто использую 'fsharpi'. Я хотел бы использовать более гибкие инструменты, предоставляемые текстовым редактором, например nano, для написания программы. Как только программа будет завершена, передайте ее компилятору так же, как я сделал с C. – Worice

+0

Любой текстовый редактор в порядке. Nano - это тот, который я использую чаще всего :) – Worice

+0

@Worice, я вижу, вы редактировали свой вопрос. Хотя я не понимаю вашу мотивацию от _not_ желая использовать Visual Studio или MonoDevelop, я попытался привести пример командной строки (немного больше, чем нужно, возможно). – Abel