Compartir vía


Introducción a F# en Visual Studio Code

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

Nota

Antes de empezar, asegúrese de que ha instalado tanto F# como el complemento Ionide.

Creación del primer proyecto con Ionide

Para crear un 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 cargue en Visual Studio Code, debería ver el panel Explorador de soluciones de F# en el lado izquierdo de la ventana abierta. 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 para usar scripts de .NET Core, vaya a la vista Explorador de Visual Studio Code y cree un archivo. Asígnele el nombre MyFirstScript.fsx.

Ahora agregue 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, un argot lúdico del inglés. El siguiente paso es evaluarlo mediante F# Interactive (FSI).

Resalte toda la función (debe ser de 11 líneas de longitud). Una vez resaltada, mantenga presionada la tecla Alt y presione Intro. 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 salida interactiva de F# con ionide

Esto hizo tres cosas:

  1. Se ha iniciado el proceso de FSI.
  2. Se ha enviado el código resaltado al proceso de FSI.
  3. El proceso FSI evaluó el código que enviaste.

Como lo que ha enviado es 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 vocal como la primera letra. Escriba lo siguiente:

toPigLatin "apple";;

Debería ver el siguiente resultado:

val it: string = "appleyay"

Parece que la función funciona según lo previsto. Enhorabuena, acaba de escribir su primera función de F# en Visual Studio Code y evaluarla con FSI.

Nota

Como puede haber observado, las líneas de FSI finalizan con ;;. Esto se debe a que FSI permite escribir varias líneas. El ;; al final permite a FSI saber cuándo finaliza 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, toPigLatin es una función que toma una palabra como entrada y la convierte en una representación Pig-Latin de esa palabra. Las reglas para esto son las siguientes:

Si el primer carácter de una palabra comienza con un vocal, agregue "yay" al final de la palabra. Si no comienza con una vocal, mueva ese primer carácter al final de la palabra y agregue "ay".

Es posible que haya observado lo siguiente en FSI:

val toPigLatin: word: string -> string

Esto indica que toPigLatin es una función que toma un string como entrada (denominada word) y devuelve otra string. Esto se conoce como la firma de tipo de la función, una parte fundamental de F# que es clave para comprender el código de F#. También observará esto 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 isVowel, que determina si un carácter determinado (c) es una vocal comprobando si coincide con uno de los patrones proporcionados a través de 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 if..then..else que comprueba si el primer carácter es un vocal y construye un valor devuelto fuera de los caracteres de entrada en función de si el primer carácter era un vocal o no:

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

Por lo tanto, el flujo de toPigLatin es el siguiente:

Compruebe si el primer carácter de la palabra de entrada es un vocal. Si es así, adjunte "yay" al final de la palabra. De lo contrario, mueva ese primer carácter al final de la palabra y agregue "ay" a él.

Hay una cosa final que se debe tener en cuenta sobre esto: en F#, no hay ninguna instrucción explícita para retornar desde 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 if..then..else es una expresión, la evaluación del cuerpo del bloque then o el cuerpo del bloque else determina el valor devuelto por la función toPigLatin.

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 de forma interactiva con FSI. Esto se conoce como desarrollo controlado por REPL, donde REPL significa "Read-Evaluate-Print Loop". Es una excelente manera de experimentar con la funcionalidad hasta que tenga algo que funcione.

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

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

A continuación, cree un nuevo module denominado PigLatin y copie la función de toPigLatin que creó anteriormente en ella como tal:

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 la función main y debajo de la declaración open System. El orden de las declaraciones es importante en F#, por lo que deberá definir la función antes de llamarla en un archivo.

Luego, en la función main, llame a la función de 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 ciertos problemas que puede encontrar:

  1. Para obtener las características de edición de código de Ionide, los archivos F# deben guardarse en el disco y dentro de una carpeta que esté abierta en el área de trabajo de Visual Studio Code.
  2. Si ha realizado cambios en el sistema o ha instalado requisitos previos de Ionide con Visual Studio Code abierto, reinicie Visual Studio Code.
  3. Si tiene caracteres no válidos en los directorios del proyecto, puede que Ionide no funcione. Cambie el nombre de los directorios del proyecto si este es el caso.
  4. Si ninguno de los comandos de Ionide funciona, compruebe los Enlaces de teclado de Visual Studio Code para ver si los está invalidando sin querer.
  5. Si Ionide está roto en la máquina y ninguno de los anteriores ha corregido el problema, intente quitar el directorio ionide-fsharp en el equipo y vuelva a instalar el conjunto de complementos.
  6. Si no se pudo cargar un proyecto (el Explorador de soluciones de 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 los miembros de la comunidad de F#. Informe de problemas y no dude en contribuir en el repositorio de GitHub de ionide-vscode-fsharp.

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

Pasos siguientes

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