typestar

Fundamentos del lenguaje

29 pasos en 9 series de OCaml.

OCaml es la rama industrial de la familia ML: inferencia de tipos tan completa que las anotaciones son una elección de estilo, coincidencia de patrones que el compilador audita por cobertura, y un sistema de módulos — functores, firmas — que ningún lenguaje mainstream ha igualado. Jane Street mueve miles de millones a través de él, Coq y el compilador original de Rust se escribieron en él, y F#, ReasonML y una generación de autores de type checkers cargan sus ideas. Es rápido, terso y honesto: la ausencia es un option, los errores son valores o excepciones declaradas, y la mutación se deletrea.

Este tour teclea el núcleo: let y let-in con los refs como excepción ruidosa, Printf, currificación y aplicación parcial, el pipeline y @@ y la composición hecha a mano, argumentos etiquetados y opcionales, match con guardas, option y result y variantes, listas de cons con el módulo List y ambos pliegues, records con copia-y-actualización, tuplas, polimorfismo, Hashtbl contra listas de asociación, arreglos mutables con los operadores punteados de flotantes, Seq perezoso, procesamiento de strings, y las piezas insignia — módulos y functores vía Map.Make. El Bis es el trío de scripts de siempre en OCaml honesto de biblioteca estándar.

Empieza este tour

Valores

  • La forma del scriptEl OCaml más pequeño: ataduras let y un let () = de efectos.
  • Ataduras letInmutable por defecto; los refs son las celdas mutables deletreadas.
  • Strings y PrintfConcatena con ^, formatea con %s y %.1f, sprintf devuelve.

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.
  • Composición y @@Arma funciones desde funciones; @@ ahorra el último paréntesis.
  • Argumentos etiquetadosLas ~etiquetas nombran argumentos; los ?opcionales cargan defectos.

Coincidencia de patrones

  • matchUna expresión que el compilador audita por cobertura.
  • optionLa ausencia deletreada Some o None — el tipo que mató al null.
  • VariantesUn conjunto cerrado de formas; el match debe cubrirlas todas.

Listas

  • Listas y consInmutables y enlazadas: :: construye, @ concatena, los patrones parten.
  • El módulo Listmap, filter, sort, fold_left: el kit de todos los días.
  • Plieguesfold_left enhebra un acumulador de cualquier forma.
  • AgruparAgrupa por clave con un pliegue a lista de asociación y clasifica.

Tipos

  • RecordsPaquetes con nombre inmutables, con igualdad estructural incluida.
  • TuplasEmpareja valores sin ceremonia; los patrones las desarman.
  • Polimorfismo'a es cualquier tipo: una función, verificada una vez, reusada siempre.

Colecciones

Módulos

  • MódulosAgrupa valores y tipos; el punto llega adentro.
  • FunctoresFunciones a nivel de módulo: Map.Make arma un mapa desde un orden.

Idiomas del lenguaje

  • resultOk o Error, con bind para mantener el pipeline en la vía feliz.
  • ExcepcionesDeclaradas como variantes, atrapadas por patrón.
  • Recursiónrec permite la autorreferencia; los acumuladores dejan la llamada en cola.

Bis

  • word_freq.mlUna tabla de frecuencias con split_on_char, un Hashtbl y un orden.
  • grade_report.mlBoletines desde un roster de records, una escalera de if y columnas.
  • temp_stats.mlUna semana de temperaturas: extremos por pliegue, barras y saltos.

Los otros tours de OCaml