typestar

Lenguajes

F#

Un lenguaje funcional de la familia ML, que corre sobre la plataforma .NET.

Practica F#

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.

Practica F#

27 pasos en 1 tours, desde lo básico hasta programas completos.

Documentación oficial

Otros lenguajes