Первая программа на F#

Последнее обновление: 09.12.2023

Создадим первую программу на языке F#. Для написания кода программы нам понадобится текстовый редактор. В принципе можно выбрать любой понравившийся текстовый редактор, например, Visual Studio Code, который является бесплатным, доступен для всех основных операционных систем: Windows, MacOS, Linux и который доступен по ссылке загрузить Visual Studio Code

Второй необходимый компонент для создания программ - компилятор. Для компиляции, построения, запуска и ряда других задач Microsoft предоставляет набор инструментов (или еще называется фреймворком), который называется .NET SDK. .NET SDK является кроссплатформенным фреймворком и доступен для всех основных операционных систем.

Установка на Linux

Для операционных систем на базе Linux можно использовать разные методы установки: установить через пакетный менеджер, установить вручную или с помощью скрипта. Рассмотрим самый простой способ - установки через пакетный менеджер. Так, для установки .NET SDK 8.0 на ОС Ubuntu и Debian через пакетный менеджер apt надо выполнить следующую команду

sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-8.0

Для установки на Fedora через пакетный менеджер dnf применяется команда

sudo dnf install dotnet-sdk-8.0

На других системах на базе Linux могут применяться другие пакетные менеджеры.

Установка на Windows

Для установки .NET SDK под Windows можно использовать специальный установщик. Загрузим его с официального сайта со страницы https://dotnet.microsoft.com/en-us/download.

Загрузка .NET

На странице https://dotnet.microsoft.com/en-us/download/dotnet/8.0 при необходимости можно найти все возможные варианты SDK под различные архитектуры и системы.

После загрузки запустим установщик .NET SDK:

Установка .NET SDK для программирования на C#

Установка на MacOS

Для MacOS самый простой способ установки также заключается в использовании программу установщика, которая доступна на официальном сайте на странице https://dotnet.microsoft.com/en-us/download.

Проверка установки .NET

После установки, чтобы убедиться, что все установлено и настроено правильно, мы можем проверить версию .NET, выполнив в командной строке/консоли команду dotnet --version:

C:\Users\eugen>dotnet --version
8.0.100

C:\Users\eugen>

Создание первой программы на F#

И после установки .NET SDK создадим первый проект. Для этого будем использовать набор консольных утилит .NET CLI.

И вначале создадим каталог для проектов на .NET (вручную или с помощью команды mkdir). Пусть каталог будет dotnet и будет располагаться в текущей папке пользователя. Откроем терминал и перейдем к этому каталогу с помощью команды cd.

C:\Users\eugen>mkdir fsharp

C:\Users\eugen>cd fsharp

C:\Users\eugen\fsharp>

Для создания проекта в .NET CLI применяется команда dotnet new, которой передается тип проекта. Мы будем создавать консольное приложение, поэтому будем использовать тип console. Итак, в введем в терминале следующую команду:

dotnet new console -lang "F#" -o helloapp

В данном случае мы указываем, что создаваемый проект будет представлять консольное приложение (console), а с помощью опции -o можно указать название проекта. То есть проект будет называться helloapp. Кроме того, опции -lang надо передать значение "F#", что означает, что мы создаем проект для языка F#. При выполнении команды консоль отобразит некоторую базовую информацию

C:\Users\eugen\fsharp>dotnet new console -lang "F#" -o helloapp 
Шаблон "Консольное приложение" успешно создан.

Идет обработка действий после создания...
Восстановление C:\Users\eugen\fsharp\helloapp\helloapp.fsproj:
  Определение проектов для восстановления...
  Восстановлен C:\Users\eugen\fsharp\helloapp\helloapp.fsproj (за 1,01 sec).
Восстановление выполнено.



C:\Users\eugen\fsharp>

После выполнения этой команды в папке helloapp будет создан проект с минимальным набором стандартных файлов и папок:

  • helloapp.fproj: главный файл проекта, который описывает его конфигурацию

  • Program.fs: файл с кодом программы на языке F#

Так, откроем главный файл программы Program.fs. По умолчанию он имеет следующее содержимое:

// For more information see https://aka.ms/fsharp-console-apps
printfn "Hello from F#"

Соответственно, если нам надо внести изменения в исходный код программы, то мы будем изменять содержимое именно этого файла.

В принципе этот минимальный проект уже можно запускать. Для запуска проекта перейдем в консоли в папку проекта helloapp и для выполнения программы введем в консоли команду dotnet run:

C:\Users\eugen\fsharp> cd helloapp
C:\Users\eugen\fsharp\helloapp>dotnet run
Hello from F#

C:\Users\eugen\fsharp\helloapp>

После выполнения команды в проекте в папке bin\Debug\net8.0 появятся файлы программы (на windows файлы helloapp.dll и helloapp.exe), которые можно вручную запустить на компьютере, где установлен .NET.

Теперь изменим весь код программы. Для этого откроем файл Program.fs в каком-нибудь текстовом редакторе и изменим его код на следующий:

open System // подключаемое пространство имен

printf "Введите свое имя: "
let name = Console.ReadLine()  // вводим имя
printfn "Привет %s" name        // выводим имя на консоль

По сравнению с автоматически сгенерированным кодом я внес несколько изменений. Теперь в функции main первой строкой подключается пространство имен System, в котором находится нужный нам функционал:

open System

Далее выводится приглашение к вводу.

printf "Введите свое имя: "

На второй строке определяется переменная name, в которую пользователь вводит информацию с консоли:

let name = Console.ReadLine()

Для получения ввода с консоли здесь используется встроенный класс Console платформы .NET, который находится в пространстве имен System. Это пространство подключено в начале с помощью директивы open. Без подключения пространства имен System я бы не смог использовать класс Console и получить введенную с консоли строку. Однако в принципе нам необязательно подключать пространство имен.

Мы можем даже удалить первую строку open System, но в этом случае мы тогда должны будем указать полный путь до используемого класса. Например, в нашем случае мы могли бы написать:

let name = System.Console.ReadLine() 

Затем введенное имя выводится на консоль:

printfn "Привет %s" name

Чтобы ввести значение переменной name внутрь выводимой на консоль строки, применяется плейсхолдер "%s". То есть при выводе строки на консоль выражение %s будет заменяться на значение переменной name - введенное имя.

Теперь протестируем проект, запустив его на выполнение с помощью команды dotnet run:

C:\Users\eugen\fsharp\helloapp>dotnet run
Введите свое имя: Евгений
Привет Евгений

C:\Users\eugen\fsharp\helloapp>
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850