Инфраструктура .NET поддерживает интерактивную среду для выполнения кода на языке F# или REPL (Read–eval–print loop), в которой мы можем вводить инструкции на F#, и они будут сразу выполняться.
Для взаимодействия с REPL откроем консоль и введем команду dotnet fsi
C:\Users\eugen>dotnet fsi Microsoft (R) F# Interactive, версия 12.8.0.0 для F# 8.0 © Корпорация Майкрософт (Microsoft Corporation). Все права защищены. Для получения справки введите #help;; >
Далее мы можем вводить команды на F#. Например, выведем строку на консоль с помощью команды printfn "Hello F#"
, причем после команды поставим два символа ";"
C:\Users\eugen>dotnet fsi Microsoft (R) F# Interactive, версия 12.8.0.0 для F# 8.0 © Корпорация Майкрософт (Microsoft Corporation). Все права защищены. Для получения справки введите #help;; > printfn "Hello F#";; Hello F# val it: unit = () >
И REPL тут же выполняет код на F# и выводит строку на экран. Обратите внимание, что инструкция завершается двумя точками с запятой ;;
.
Чтобы выйти из REPL, надо ввести команду #quit;;
Установка маркера ;; для последней инструкции позволяет определять многострочные программы с несколькими командами. После каждой команды вводится Enter, и только после последней команды указывается двойной символ ;. Например, выведем две строки на консоль:
C:\Users\eugen>dotnet fsi
Microsoft (R) F# Interactive, версия 12.8.0.0 для F# 8.0
© Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
Для получения справки введите #help;;
> printfn "Hello F#"
- printfn "Hello METANIT.COM";; последняя команда
Hello F#
Hello METANIT.COM
val it: unit = ()
>
Подобным образом можно определять более сложные команды. Например:
C:\Users\eugen>dotnet fsi Microsoft (R) F# Interactive, версия 12.8.0.0 для F# 8.0 © Корпорация Майкрософт (Microsoft Corporation). Все права защищены. Для получения справки введите #help;; > let x = 8 - let y = 9 - let z = x + y - printfn "%d" z;; 17 val x: int = 8 val y: int = 9 val z: int = 17 val it: unit = () >
Здесь определяются три переменных - x, y и z. Причем значение z равно сумме x и y. Затем значение z выводится на консоль.
Также код на F# можно выносить в отдельный файл, а этот файл выполнять в REPL. Подобный файл с кодом F# должен иметь расширение .fsx. Например, создадим в файл program.fsx и определим в нем следующий код:
open System // подключаемое пространство имен printf "Введите свое имя: " let name = Console.ReadLine() // вводим имя printfn "Привет %s" name // выводим имя на консоль
Запустим код из файла в REPL. Для этого после команды dotnet fsi указывается путь к файлу:
C:\Users\eugen>dotnet fsi documents\fsharp\program.fsx Введите свое имя: Eugene Привет Eugene C:\Users\eugen>
В моем случае файл располагается по относительному пути "documents\fsharp\program.fsx".