F#
Un lenguaje funcional de la familia ML, que corre sobre la plataforma .NET.
27 pasos en 1 tours, desde lo básico hasta programas completos.
Los tours
- Primera versión
- 2005
- Creado por
- Don Syme at Microsoft Research
- Tipado
- Estático, inferido casi en todas partes; inmutable hasta que digas lo contrario
- Los fragmentos siguen
- F# 10
- Extensiones de archivo
- .fs, .fsx, .fsi
Para qué sirve
F# es el lenguaje funcional-primero de la familia .NET: el linaje de OCaml — ataduras let, coincidencia de patrones, uniones discriminadas, currificación — compilado al CLR, con el ecosistema entero de NuGet a un open de distancia. Las finanzas fueron su primer bastión (a bancos y mesas de trading les gustaron los tipos que vuelven irrepresentables los estados ilegales), y sostiene terreno serio en análisis de datos, backends web vía Giraffe y el stack SAFE, y donde sea que un equipo de C# quiera una herramienta de modelado más afilada.
Las jugadas insignia del lenguaje son de dar forma a los datos: records con copia-y-actualización, uniones que el compilador obliga a matchear exhaustivamente, Option y Result en vez de null y excepciones, y el operador pipeline enhebrando transformaciones de izquierda a derecha. Las unidades de medida — kilogramos y frascos verificados al compilar con costo cero en runtime — siguen siendo una capacidad que esencialmente ningún rival mainstream ha entregado.
Su historia de scripting es calladamente excelente: los archivos .fsx corren bajo dotnet fsi con chequeo de tipos completo y referencias NuGet, volviendo a F# una alternativa seria a Python para scripts exploratorios en equipos amigos de .NET. La comunidad es chica e inusualmente experimentada; el lenguaje cambia lento y con deliberación, y el código de hace una década en su mayoría todavía compila.
De dónde viene
Don Syme construyó F# en Microsoft Research en Cambridge, publicando la primera entrega en 2005 como un porte con calidad de investigación del núcleo de OCaml a .NET — trabajo que ya había obligado al CLR a crecer genéricos, una contribución de la que quien programa C# se beneficia a diario. Se graduó a lenguaje con soporte pleno de Visual Studio con F# 2.0 en 2010.
F# se volvió open source bajo la custodia de la F# Software Foundation, y los async workflows que entregó en 2007 anticiparon en silencio el patrón async/await que C#, Python y JavaScript adoptaron después. Los type providers (2012) le dieron esquemas en tiempo de compilación para fuentes de datos externas — otra idea adelantada a su ecosistema.
Cuando .NET mismo se volvió multiplataforma y abierto, F# acompañó por completo: de primera clase en el CLI de dotnet, con entregas siguiendo la cadencia anual de .NET. Se asentó en el papel de conciencia de diseño de .NET — un lenguaje chico cuyas ideas (records, coincidencia de patrones, honestidad sobre referencias anulables) siguen migrando a su hermano mayor.
Cómo se siente teclearlo
F# se escribe como apuntes de matemática tomados rápido: let y el signo igual abren la mayoría de las líneas, casi ninguna anotación de tipo sobrevive a la inferencia, y el espacio en blanco hace el trabajo estructural que harían las llaves. El pipeline |> es la pulsación insignia, a menudo abriendo líneas sangradas en columna, con >> para composición y :: para cons cerca detrás. Los brazos del match se alinean bajo barras verticales, los formatos de printfn llevan %s y %d, y el vocabulario módulo-punto — List.map, Option.bind, Seq.take — cae como camelCase parejo tras módulos con mayúscula. Poca puntuación, mucho ritmo.
27 pasos en 1 tours, desde lo básico hasta programas completos.
Documentación oficial
- fsharp.org
- La documentación de F# (Microsoft Learn)
- La referencia del lenguaje
- F# for Fun and Profit
- La referencia de la biblioteca core