Introducción a F# en Visual Studio Code

Puede escribir F# en Visual Studio Code con el complemento Ionide para obtener una excelente experiencia de entorno de desarrollo integrado (IDE) ligero y multiplataforma con IntelliSense y refactorizaciones de código. Visite Ionide.io para obtener más información sobre el complemento.

Para empezar, asegúrese de que tiene F# y el complemento Ionide instalados correctamente.

Creación del primer proyecto con Ionide

Para crear un nuevo proyecto de F#, abra una línea de comandos y cree un proyecto con la CLI de .NET:

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

Una vez completado, cambie el directorio al proyecto y abra Visual Studio Code:

cd FirstIonideProject
code .

Una vez que el proyecto se Visual Studio Code, debería ver el panel de Explorador de soluciones F# en el lado izquierdo de la ventana abierto. Esto significa que Ionide ha cargado correctamente el proyecto que acaba de crear. Puede escribir código en el editor antes de este momento dado, pero una vez que esto sucede, todo ha terminado de cargarse.

escritura del primer script

Una vez que haya configurado Visual Studio Code scripting de .NET Core, vaya a la vista Explorador de Visual Studio Code y cree un nuevo archivo. Asíécela MyFirstScript.fsx.

Ahora, agrégréle el código siguiente:

let toPigLatin (word: string) =
    let isVowel (c: char) =
        match c with
        | 'a' | 'e' | 'i' |'o' |'u'
        | 'A' | 'E' | 'I' | 'O' | 'U' -> true
        |_ -> false
    
    if isVowel word.[0] then
        word + "yay"
    else
        word.[1..] + string(word.[0]) + "ay"

Esta función convierte una palabra en una forma de Pig Latin. El siguiente paso consiste en evaluarlo mediante F# interactivo (FSI).

Resalte toda la función (debe tener 11 líneas de longitud). Una vez resaltado, mantenga presionada la tecla Alt y presione Entrar. Observará que aparece una ventana de terminal en la parte inferior de la pantalla y debería tener un aspecto similar al siguiente:

Ejemplo de F# interactivo salida con Ionide

Esto hizo tres cosas:

  1. Inició el proceso de FSI.
  2. Envió el código que resaltó en el proceso de FSI.
  3. El proceso de FSI evaluó el código que envió.

Dado que lo que envió a través de era una función, ahora puede llamar a esa función con FSI. En la ventana interactiva, escriba lo siguiente:

toPigLatin "banana";;

Debería ver el siguiente resultado:

val it: string = "ananabay"

Ahora, vamos a probar con una voto como primera letra. Escriba lo siguiente:

toPigLatin "apple";;

Debería ver el siguiente resultado:

val it: string = "appleyay"

La función parece funcionar según lo previsto. Enhorabuena, acaba de escribir su primera función de F# en Visual Studio Code la evaluó con FSI.

Nota

Como puede que haya observado, las líneas de FSI finalizan con ;; . Esto se debe a que FSI permite escribir varias líneas. Al ;; final, permite a FSI saber cuándo ha finalizado el código.

Explicación del código

Si no está seguro de lo que hace realmente el código, este es un paso a paso.

Como puede ver, es una función que toma una palabra como entrada y la convierte en una Pig-Latin toPigLatin representación de esa palabra. Las reglas para esto son las siguientes:

Si el primer carácter de una palabra comienza con una voz, agregue "yay" al final de la palabra. Si no comienza con una voz, mueva ese primer carácter al final de la palabra y agrégréle "ay".

Es posible que haya observado lo siguiente en FSI:

val toPigLatin: word: string -> string

Indica que es una función que toma como entrada toPigLatin string (denominada word ) y devuelve otro string . Esto se conoce como la firma de tipo de lafunción , una parte fundamental de F# que es clave para comprender el código de F#. También lo observará si mantiene el puntero sobre la función en Visual Studio Code.

En el cuerpo de la función, observará dos partes distintas:

  1. Una función interna, denominada , que determina si un carácter determinado ( ) es una voto comprobando si coincide con uno de los patrones proporcionados a través de isVowel c Coincidencia de patrones:

    let isVowel (c: char) =
        match c with
        | 'a' | 'e' | 'i' |'o' |'u'
        | 'A' | 'E' | 'I' | 'O' | 'U' -> true
        |_ -> false
    
  2. Expresión que comprueba si el primer carácter es una voz y construye un valor devuelto a partir de los caracteres de entrada en función de si el primer carácter era una voz if..then..else o no:

    if isVowel word.[0] then
        word + "yay"
    else
        word.[1..] + string(word.[0]) + "ay"
    

Por lo tanto, toPigLatin el flujo de es:

Compruebe si el primer carácter de la palabra de entrada es una voz. Si es así, adjunte "yay" al final de la palabra. De lo contrario, mueva ese primer carácter al final de la palabra y agrégréle "ay".

Hay una última cosa que hay que tener en cuenta: en F#, no hay ninguna instrucción explícita para volver de la función. Esto se debe a que F# está basado en expresiones y la última expresión evaluada en el cuerpo de una función determina el valor devuelto de esa función. Dado que es en sí una expresión, la evaluación del cuerpo del bloque o del cuerpo del bloque determina el if..then..else valor devuelto por la then else toPigLatin función.

Convertir la aplicación de consola en un generador de Pig Latin

En las secciones anteriores de este artículo se mostró un primer paso común para escribir código de F#: escribir una función inicial y ejecutarla interactivamente con FSI. Esto se conoce como desarrollo controlado por REPL, donde REPL significa "Bucle de lectura-evaluación-impresión". Es una excelente manera de experimentar con la funcionalidad hasta que algo funcione.

El siguiente paso del desarrollo controlado por REPL es mover el código de trabajo a un archivo de implementación de F#. A continuación, el compilador de F# puede compilarlo en un ensamblado que se pueda ejecutar.

Para empezar, abra el archivo Program.fs que creó anteriormente con la CLI de .NET. Observará que ya hay código ahí.

A continuación, cree una nueva llamada y copie en ella la función module PigLatin que toPigLatin creó anteriormente:

module PigLatin =
    let toPigLatin (word: string) =
        let isVowel (c: char) =
            match c with
            | 'a' | 'e' | 'i' |'o' |'u'
            | 'A' | 'E' | 'I' | 'O' | 'U' -> true
            |_ -> false
        
        if isVowel word[0] then
            word + "yay"
        else
            word[1..] + string word[0] + "ay"

Este módulo debe estar por encima de main la función y debajo de la open System declaración. El orden de las declaraciones es importante en F#, por lo que deberá definir la función antes de llamarla en un archivo.

Ahora, en la main función , llame a la función del generador de Pig Latin en los argumentos:

[<EntryPoint>]
let main args =
    for arg in args do
        let newArg = PigLatin.toPigLatin arg
        printfn "%s in Pig Latin is: %s" arg newArg

    0

Ahora puede ejecutar la aplicación de consola desde la línea de comandos:

dotnet run apple banana

Y verá que genera el mismo resultado que el archivo de script, pero esta vez como un programa en ejecución.

Solución de problemas de Ionide

Estas son algunas maneras de solucionar determinados problemas con los que puede encontrarse:

  1. Para obtener las características de edición de código de Ionide, los archivos de F# deben guardarse en el disco y dentro de una carpeta que esté abierta en el área Visual Studio Code trabajo.
  2. Si ha realizado cambios en el sistema o ha instalado los requisitos previos de Ionide con Visual Studio Code, reinicie Visual Studio Code.
  3. Si tiene caracteres no válidos en los directorios del proyecto, es posible que Ionide no funcione. Cambie el nombre de los directorios del proyecto si este es el caso.
  4. Si ninguno de los comandos Ionide funciona, compruebe los enlaces de clave Visual Studio Code para ver si los va a invalidar por accidente.
  5. Si la Ionide está rota en el equipo y ninguna de las anteriores ha corregido el problema, intente quitar el directorio de la máquina y vuelva a instalar el conjunto ionide-fsharp de complementos.
  6. Si no se pudo cargar un proyecto (el Explorador de soluciones F# mostrará esto), haga clic con el botón derecho en ese proyecto y haga clic en Ver detalles para obtener más información de diagnóstico.

Ionide es un proyecto de código abierto creado y mantenido por miembros de la comunidad de F#. Informe de problemas y no dude en colaborar en el repositorio ionide-vscode-fsharp GitHub repositorio.

También puede solicitar más ayuda a los desarrolladores de Ionide y a la comunidad de F# en el canal de Gitter de Ionide.

Pasos siguientes

Para más información sobre F# y las características del lenguaje, consulte Paseo por F#.