Roc – Un lenguaje rápido, amigable y funcional

Roc es un nuevo lenguaje de programación rápido y puramente funcional, fuertemente inspirado en Elm y en lenguajes de la familia ML, que busca combinar tipado estático sólido y efectos gestionados con velocidad y rendimiento de compilación al estilo de Go. Los comentaristas elogian su sitio web inusualmente pulido, el REPL en línea y los objetivos de diseño claros (velocidad, amabilidad, simplicidad), al tiempo que destacan ideas técnicas como el conteo de referencias en tiempo de compilación (Perceus), un sistema de efectos llamado “abilities” y un modelo de FFI basado en plataformas. Algunos siguen cautelosos debido a problemas pasados de gobernanza y comunidad en Elm y a la incertidumbre de adoptar un lenguaje joven con un ecosistema pequeño, pero otros ven a Roc como un candidato prometedor para hacer la programación funcional pura más práctica y corriente.

Recepción general y sitio web

  • Muchos encuestados encuentran Roc interesante y moderno, con un gran entusiasmo por parte de los fans de los lenguajes funcionales.
  • El nuevo sitio web es ampliamente elogiado: claro, elegante, con un REPL en línea, un breve tutorial guiado y páginas explicativas detalladas sobre “fast”, “friendly” y “functional”.
  • Varios desearían que más lenguajes igualaran esta calidad de incorporación.

Objetivos y diseño del lenguaje

  • Se destacan como puntos de venta clave:
    • Puramente funcional con evaluación estricta.
    • Enfoque en código compilado muy rápido mediante optimización agresiva y mutación in situ “oportunista”.
    • Conteo de referencias estático (estilo Perceus) para evitar GC manteniendo una semántica simple.
    • Efectos gestionados (“Tasks” / abilities), aislando los efectos secundarios y mejorando la capacidad de prueba.
  • La abstracción de plataforma y las importaciones declarativas se consideran interesantes, aunque todavía no se entienden del todo.
  • Roc a veces puede ejecutar código con ciertos errores de tipos si esas rutas no se ejecutan, lo que se ve como útil para refactorizar.

Sistema de tipos, macros y ergonomía

  • Los tipos se infieren por completo; las anotaciones son opcionales pero están soportadas. Algunos argumentan que esto puede perjudicar la localización de errores y prefieren anotar al menos los límites de las funciones.
  • Roc apunta a la simplicidad en lugar de características altamente expresivas como los tipos de orden superior.
  • El plan es no soportar macros, en gran parte para mantener más simple la compatibilidad con herramientas de edición; algunos ven esto como una limitación importante para la metaprogramación.
  • Las reacciones a la sintaxis son mixtas: el backslash para lambdas y la interpolación, la relevancia del espacio en blanco y el camelCase desagradan a algunos.

Herramientas, FFI e implementación

  • El compilador está escrito en Rust; la biblioteca estándar está en Zig.
  • Existe un servidor de lenguaje basado en LSP; un IDE propio ha sido relegado en favor del soporte para múltiples editores.
  • Existe FFI con C, pero se canaliza a través de “platforms” en lugar de enlaces arbitrarios por paquete.

Comparaciones con otros lenguajes

  • Se compara con frecuencia con Elm, Haskell, OCaml/ML, Koka, Rust, Go, F#, Gleam y varios Lisps.
  • Algunos ven Roc como un lenguaje práctico, estricto y más simple, al estilo Haskell, influido por Elm y Koka.
  • Los escépticos cuestionan si ofrece suficiente frente a los ecosistemas existentes, especialmente dada la juventud de su panorama de bibliotecas.

Preocupaciones sobre la comunidad y la historia

  • Varios comentarios retoman problemas pasados de gobernanza y comunidad en torno a Elm, expresando desconfianza y reticencia a invertir en otro lenguaje joven de círculos relacionados.
  • Otros subrayan las disculpas, las segundas oportunidades y señalan que la comunidad actual de Roc resulta acogedora.
  • Algunos consideran indeseable el drama recurrente en sí y prefieren centrarse en los aspectos técnicos.