Rex: un lenguaje funcional puro para flujos de trabajo científicos

Fuentes: Rex: a pure functional language for scientific workflows

Rex (abreviatura de Rush Expressions) es un lenguaje de programación funcional puro y de tipado estático, orientado al cálculo científico y al procesamiento de datos. Su premisa central es que el trabajo en Rex se expresa como transformaciones puras sobre valores inmutables, mientras que módulos de herramientas tipados delegan las tareas intensivas en cómputo a programas externos.

El sistema articula cuatro ideas clave para procesar datos científicos: un lenguaje funcional genuino que unifica el control de flujo, el flujo de datos, la reutilización y el manejo de errores en lugar de mezclarlos con YAML, shell y configuraciones ad hoc; un almacenamiento direccionable por contenido que identifica cada artefacto de entrada y salida mediante su hash BLAKE3; APIs de herramientas tipadas que exponen conceptos de dominio como códecs de vídeo, estructura de PDF, operaciones de imagen y formatos de salida; y ejecución aislada en Docker, capaz de lanzar cada invocación en un contenedor nuevo y bloqueado que contiene únicamente sus entradas declaradas.

Rex incorpora inferencia de tipos Hindley–Milner, tipos algebraicos, registros, pattern matching, polimorfismo paramétrico, type classes, funciones de orden superior, recursión y módulos. Su evaluador es estricto pero mantiene la pureza de expresiones y funciones, lo que permite ejecutar llamadas asíncronas independientes en paralelo sin que el usuario gestione hilos ni callbacks. Las opciones de las herramientas se modelan con registros y tipos algebraicos, de modo que un Image no pueda sustituir accidentalmente a un Media y los errores de dominio se distingan de los fallos de infraestructura.

El repositorio incluye además un almacén de contenido con dos clases de objetos (blobs y árboles) y un modelo portable que puede apoyarse en un sistema de archivos local, en memoria o en un bucket S3. La combinación de tipos estáticos, pureza y una frontera cerrada de herramientas convierte a Rex en un destino especialmente adecuado para flujos generados por modelos de lenguaje, ya que los diagnósticos del compilador permiten reparar las propuestas antes de ejecutar ninguna herramienta externa.