Introducción a F# con la CLI de .NET

En este artículo se habla de cómo se puede empezar a trabajar con F# en cualquier sistema operativo (Windows, macOS o Linux) con la CLI de .NET. Eso pasa por compilar una solución de varios proyectos con una biblioteca de clases a la que llama una aplicación de consola.

Requisitos previos

Para empezar, debe instalar el SDK de .NET más reciente.

En este artículo se da por hecho que sabe cómo usar una línea de comandos y tiene un editor de texto preferido. Si aún no lo usa, Visual Studio Code es una excelente opción como editor de texto para F#.

Compilación de una solución simple de varios proyectos

Abra un símbolo del sistema o terminal y use el comando dotnet new para crear un nuevo archivo de solución de nombre FSharpSample:

dotnet new sln -o FSharpSample

La siguiente estructura de directorios se genera después de ejecutar el comando anterior:

FSharpSample
    ├── FSharpSample.sln

Escritura de una biblioteca de clases

Cambie el directorio a FSharpSample.

Use el comando dotnet new para crear un proyecto de biblioteca de clases en la carpeta src de nombre Library.

dotnet new classlib -lang "F#" -o src/Library

La siguiente estructura de directorios se genera después de ejecutar el comando anterior:

└── FSharpSample
    ├── FSharpSample.sln
    └── src
        └── Library
            ├── Library.fs
            └── Library.fsproj

Reemplace el contenido de Library.fs por el código siguiente:

module Library

open System.Text.Json

let getJson value =
    let json = JsonSerializer.Serialize(value)
    value, json

Agregue el proyecto Library a la solución FSharpSample mediante el comando dotnet sln add:

dotnet sln add src/Library/Library.fsproj

Ejecute dotnet build para compilar el proyecto. Las dependencias sin resolver se restauran al compilar.

Escritura de una aplicación de consola que use la biblioteca de clases

Use el comando dotnet new para crear una aplicación de consola en la carpeta src de nombre App.

dotnet new console -lang "F#" -o src/App

La siguiente estructura de directorios se genera después de ejecutar el comando anterior:

└── FSharpSample
    ├── FSharpSample.sln
    └── src
        ├── App
        │   ├── App.fsproj
        │   ├── Program.fs
        └── Library
            ├── Library.fs
            └── Library.fsproj

Reemplace el contenido del archivo Program.fs por el código siguiente:

open System
open Library

[<EntryPoint>]
let main args =
    printfn "Nice command-line arguments! Here's what System.Text.Json has to say about them:"

    let value, json = getJson {| args=args; year=System.DateTime.Now.Year |}
    printfn $"Input: %0A{value}"
    printfn $"Output: %s{json}"

    0 // return an integer exit code

Agregue una referencia al proyecto Library mediante dotnet add reference.

dotnet add src/App/App.fsproj reference src/Library/Library.fsproj

Agregue el proyecto App a la solución FSharpSample mediante el comando dotnet sln add:

dotnet sln add src/App/App.fsproj

Restaure las dependencias NuGet con dotnet restore y ejecute dotnet build para compilar el proyecto.

Cambie el directorio al proyecto de consola src/App y ejecute el proyecto al pasar Hello World como argumentos:

cd src/App
dotnet run Hello World

Debería ver los siguientes resultados:

Nice command-line arguments! Here's what System.Text.Json has to say about them:
Input: { args = [|"Hello"; "World"|] year = 2021 }
Output: {"args":["Hello","World"],"year":2021}

Pasos siguientes

A continuación, vea Paseo por F# para obtener más información sobre las diferentes características de F#.