F# es un lenguaje de programación universal para escribir código conciso, sólido y eficaz.
F# le permite escribir código despejado y autodocumentado, donde su enfoque permanece en el dominio de su problema, en lugar de los detalles de la programación.
Lo hace sin comprometer la velocidad y la compatibilidad: es de código abierto, multiplataforma e interoperable.
open System // Gets access to functionality in System namespace.
// Defines a list of names
let names = [ "Peter"; "Julia"; "Xi" ]
// Defines a function that takes a name and produces a greeting.
let getGreeting name = $"Hello, {name}"
// Prints a greeting for each name!
names
|> List.map getGreeting
|> List.iter (fun greeting -> printfn $"{greeting}! Enjoy your F#")
F # tiene numerosas características, que incluyen:
- sintaxis ligera
- Inmutable por defecto
- Inferencia de tipos y generalización automática
- Funciones de primera clase
- Tipos de datos potentes
- La coincidencia de patrones
- Programación asíncrona
se documenta un conjunto completo de características.
Tipos de datos enriquecidos
Tipos como Registros y Uniones discriminadas le permiten representar sus datos.
// Group data with Records
type SuccessfulWithdrawal =
{ Amount: decimal
Balance: decimal }
type FailedWithdrawal =
{ Amount: decimal
Balance: decimal
IsOverdraft: bool }
// Use discriminated unions to represent data of 1 or more forms
type WithdrawalResult =
| Success of SuccessfulWithdrawal
| InsufficientFunds of FailedWithdrawal
| CardExpired of System.DateTime
| UndisclosedFailure
Los registros F# y las uniones discriminadas no son nulos, son inmutables y comparables de forma predeterminada, lo que los hace muy fáciles de usar.
Corrección con funciones y coincidencia de patrones.
Las funciones de F# son fáciles de definir. Cuando se combinan con la coincidencia de patrones , le permiten definir el comportamiento cuya corrección es aplicada por el compilador.
// Returns a WithdrawalResult
let withdrawMoney amount = // Implementation elided
let handleWithdrawal amount =
let w = withdrawMoney amount
// The F# compiler enforces accounting for each case!
match w with
| Success s -> printfn "Successfully withdrew %f{s.Amount}"
| InsufficientFunds f -> printfn "Failed: balance is %f{f.Balance}"
| CardExpired d -> printfn "Failed: card expired on {d}"
| UndisclosedFailure -> printfn "Failed: unknown :("
Las funciones de F# también son de primera clase, lo que significa que pueden pasarse como parámetros y devolverse desde otras funciones.
Funciones para definir operaciones sobre objetos
F# tiene soporte completo para objetos, que son útiles cuando necesita combinar datos y funcionalidad. Los miembros y funciones de F# se pueden definir para manipular objetos.
type Set<'T when 'T: comparison>(elements: seq<'T>) =
member s.IsEmpty = // Implementation elided
member s.Contains (value) =// Implementation elided
member s.Add (value) = // Implementation elided
// ...
// Further Implementation elided
// ...
interface IEnumerable<‘T>
interface IReadOnlyCollection<‘T>
module Set =
let isEmpty (set: Set<'T>) = set.IsEmpty
let contains element (set: Set<'T>) = set.Contains(element)
let add value (set: Set<'T>) = set.Add(value)
En F#, a menudo escribirá código que trata los objetos como un tipo para que las funciones los manipulen. Las características como interfaces genéricas , expresiones de objetos y el uso juicioso de los miembros son comunes en los programas de F# más grandes.
¿Cómo empezar con el lenguaje F#?
Existen varias guías sobre cómo instalar y usar F# por primera vez en su máquina. Puede usar la siguiente tabla para ayudar a tomar una decisión:
SISTEMA OPERATIVO | PREFIERO VISUAL STUDIO | PREFERIR EL CÓDIGO DE VISUAL STUDIO | PREFERIR LÍNEA DE COMANDO |
---|---|---|---|
Windows | Introducción a Visual Studio | Comience con el código de Visual Studio | Introducción a la CLI de .NET |
Mac OS | Comience con VS para Mac | Comience con el código de Visual Studio | Introducción a la CLI de .NET |
Linux | N / A | Comienza con el código de Visual Studio | Introducción a la CLI de .NET |
En general, no hay ninguna guía específico que sea mejor que el resto. ¡Es recomendable ojear todas las formas de usar F # en tu máquina para ver cuál te gusta más!
Comienza online
Si prefiere no instalar F# y .NET en su máquina, también puede comenzar con F# en el navegador:
- Introducción a F# en Binder es un cuaderno Jupyter alojado a través del servicio gratuito de Binder . ¡No es necesario registrarse!
- Fable REPL es un REPL interactivo en el navegador que usa Fable para traducir el código F# a JavaScript. ¡Vea las numerosas muestras que van desde los conceptos básicos de F # hasta un videojuego completo que se ejecuta en su navegador!
Contenido recomendado
- Conceptos de programación funcional en F# – F#
Aprenda los conceptos de programación funcional en F#.
-
Comience con F# con herramientas de línea de comandos
Aprenda a crear una solución sencilla para varios proyectos en F# mediante la CLI de .NET en cualquier sistema operativo (Windows, macOS o Linux).
-
Introducción a F# en Visual Studio Code
Aprenda a usar F# con Visual Studio Code y el conjunto de complementos Ionide.
-
Una guía de referencia para las funciones y herramientas del lenguaje F#.
-
Aprenda a instalar F# de varias maneras diferentes.
-
Examine algunas de las características clave del lenguaje de programación F# en este recorrido con ejemplos de código.
-
Uso de funciones en F#
Aprenda sobre las funciones y cómo son importantes para la programación en F#.