typestar

Fundamentos del lenguaje

27 pasos en 9 series de F#.

F# es el lenguaje funcional-primero de la familia .NET: el linaje de OCaml corriendo sobre el CLR, con el ecosistema entero de NuGet a un open de distancia. La inmutabilidad es el defecto, el compilador infiere casi cada tipo, y el operador pipeline vuelve las transformaciones de datos oraciones que se leen hacia adelante. Casas de finanzas, equipos de datos y backends web (Giraffe, el stack SAFE) lo corren en producción, y su forma de scripting — archivos .fsx bajo dotnet fsi — lo hace uno de los lenguajes de REPL más gratos en cualquier runtime.

Este tour teclea el núcleo funcional: ataduras let con mutabilidad deliberada, los tres idiomas de armar strings, currificación y aplicación parcial, pipelines y composición, match con guardas, Option y Result con sus pipelines de módulo, patrones activos, listas armadas con cons y el módulo List, pliegues, records con copia-y-actualización, uniones discriminadas, Map y Set, groupBy, arreglos contra secuencias perezosas, recursión de cola, excepciones, y el truco insignia — unidades de medida que el compilador hace cumplir. El Bis es el trío de scripts de siempre en F# idiomático: countBy, matches con guardas y pairwise.

Empieza este tour

Valores

Funciones

  • CurrificaciónCada función toma un argumento; la aplicación parcial es gratis.
  • El pipeline|> alimenta el valor izquierdo hacia adelante; los datos se leen en orden de flujo.
  • Composición>> pega funciones en funciones nuevas, sin nombrar argumento.

Coincidencia de patrones

  • matchUna expresión que debe cubrir cada caso; el compilador audita.
  • OptionLa ausencia deletreada Some o None — no hay null que olvidar.
  • Patrones activosNombra una clasificación una vez; matchea como si fuera nativa.

Listas

  • Listas y consInmutables, enlazadas: :: construye, @ concatena, los patrones parten.
  • El módulo Listmap, filter, sortBy, sumBy: el kit de todos los días.
  • fold y reduceEnhebra estado por una lista; el acumulador puede ser lo que sea.

Tipos

  • RecordsPaquetes con nombre inmutables, con igualdad estructural incluida.
  • Uniones discriminadasUn conjunto cerrado de formas; el match debe cubrirlas todas.
  • TuplasEmpareja valores sin ceremonia; los patrones las desarman.

Colecciones

  • Map y SetColecciones inmutables con clave y de únicos; cada add devuelve otra.
  • groupBy y countByCubetea una lista por clave calculada y pliega cada cubeta.
  • Arreglos y seqsLos arreglos indexan y mutan; las seqs son vistas perezosas.

Idiomas del lenguaje

  • ResultOk o Error, y bind para mantener el pipeline en la vía feliz.
  • Recursiónrec permite la autorreferencia; el acumulador deja la llamada en cola.
  • Pipelines de Optionmap, filter y defaultValue encadenan maybes sin un solo chequeo de null.

Firmas y pereza

Bis

  • word_freq.fsxUna tabla de frecuencias con Split, countBy y un orden de dos claves.
  • grade_report.fsxBoletines desde un roster de records, un match con guardas y columnas.
  • temp_stats.fsxUna semana de temperaturas: minBy/maxBy, barras y saltos con pairwise.

Los otros tours de F#