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.