Что такое F# Interactive?
Иногда вы не хотите проходить через процесс создания, упаковки и распространения приложения. F# Interactive — это интерактивная среда программирования и скриптов. Это упрощает переход от идеи к коду, позволяя писать и оценивать код в режиме реального времени через консоль или автономные файлы скриптов.
Запуск F# Interactive
F# Interactive встроен в пакет SDK для .NET. Его можно запустить с помощью команды .NET CLI dotnet fsi .
dotnet fsi
Цикл чтения-оценки-печати (REPL)
Запуск F# Interactive запускает сеанс цикла чтения-оценки-печати (REPL), в котором вы можете написать свой код F# и немедленно оценить его вывод в консоли.
Microsoft (R) F# Interactive version 13.9.201.0 for F# 9.0
Copyright (c) Microsoft Corporation. All Rights Reserved.
For help type #help;;
>
Запускать и оценивать выражения
Чтобы оценить ваш ввод, вы должны ввести его после символа >.
> #help;;
Например, при выполнении команды выходные #help данные отображают меню справки F# Interactive.
F# Interactive directives:
#r "file.dll";; // Reference (dynamically load) the given DLL
#i "package source uri";; // Include package source uri when searching for packages
#I "path";; // Add the given search path for referenced DLLs
#load "file.fs" ...;; // Load the given file(s) as if compiled and referenced
#time ["on"|"off"];; // Toggle timing on/off
#help;; // Display help
#help "idn";; // Display documentation for an identifier, e.g. #help "List.map";;
#r "nuget:FSharp.Data, 3.1.2";; // Load Nuget Package 'FSharp.Data' version '3.1.2'
#r "nuget:FSharp.Data";; // Load Nuget Package 'FSharp.Data' with the highest version
#clear;; // Clear screen
#quit;; // Exit
F# Interactive command line options:
See 'dotnet fsi --help' for options
Символы ;; разделяют конец выражения. Никакой код не оценивается, пока вы не введете символы ;;. Эта структура полезна при написании многостроковых выражений, так как код не разделен новыми символами строк.
Вычисление кода F# выполняется аналогичным образом. Следующий код выводит сообщение на консоль.
> printfn "Hello World!";;
Вычислимые выходные данные:
Hello World!
val it: unit = ()
Первая строка отображает выходные данные из вычисляемого кода, а вторая строка отображает сведения о типе выходных данных. В этом случае выходные данные (val) в консоль имеют тип unit, который представлен () маркером и привязан к it имени. Вы можете получить доступ к значению it позже в своей программе, если захотите выполнить больше операций.
Завершение работы REPL
После использования интерактивной rePL F# используйте #q команды или #quit команды для выхода.
> #q;;
Файлы скриптов F#
Когда вы пишете больше кода, вы можете сохранить код в скрипте с расширением .fsx.
Если вы используете тот же пример печати сообщения в консоль, можно создать файл с именем my-script.fsx для записи кода.
printfn "Hello World!"
Обратите внимание, что в FSX-файлах не нужно использовать ;; в конце выражений. Вам не нужно, так как в файлах скриптов F# Interactive может использовать стандартные рекомендации по форматированию кода F#, такие как отступы и новые строки.
Вместо компиляции исходного кода и последующего запуска скомпилированной сборки вы можете просто запустить dotnet fsi и указать имя файла сценария, содержащего ваш код F#, и F# interactive считывает код и выполняет его в реальном времени.
dotnet fsi my-script.fsx
Запуск этого сценария дает следующий результат.
Hello World!