Roc se acerca a su primera versión numerada 0.1.0

El lenguaje de programación Roc avanza hacia su primera versión numerada, la 0.1.0, según avanzó Richard Feldman en una charla organizada por el canal Func Prog Sweden. Roc es un lenguaje diseñado para programación funcional con ambiciones de cubrir casos de uso típicos de Go, Rust y los entornos de

Análisis de ocho años enviando enlaces a Lobsters

El programador Abhinav Sarkar, miembro de Lobsters desde junio de 2018, descargó sus 220 envíos a la comunidad mediante la API JSON del sitio y los sometió a un análisis estadístico. En los primeros seis años su actividad fue muy reducida, pero a partir de mediados de 2024 se intensificó notablement

Cómo acelerar scripts Haskell en GitHub Actions con bundles en caché

Ejecutar scripts Haskell en GitHub Actions suele ser lento: cada ejecución parte de un runner limpio, sin caché de Nix ni de Magix, así que hay que instalar herramientas, descargar dependencias y compilar el guion desde cero. En un caso real, esa puesta en marcha consumió 92 de los 105 segundos tota

Slap: un parcheador de ROM multiplataforma, libre y muy documentado

Slap es un parcheador de ROM multiplataforma, de código abierto y línea de comandos, creado por nyuutsu ante la ausencia de una herramienta CLI en Linux que se ajustara a sus necesidades para preparar cartuchos mediante FXPak. Admite veinte formatos de parche —IPS, IPS32, UPS, BPS, EBP, PPF3, NINJA2

Haskell en cinco puntos: elección incondicional mediante parametricidad

Justin Le publica la segunda entrega de su serie «Five-Point Haskell», centrada en el principio que bautiza como «elección incondicional». La idea aprovecha la parametricidad de Haskell: cuando una función tiene un tipo polimórfico como `forall a. a -> a`, el compilador deduce propiedades que toda i

Overrides de Nix que se autodisuelven cuando dejan de ser necesarios

En cualquier proyecto que use Nix y nixpkgs es habitual añadir overrides puntuales en el flake.nix para forzar una versión de un paquete más reciente que la disponible en el pin de nixpkgs — por ejemplo, una versión concreta de yesod-form que el proyecto necesita hoy y que aún no ha sido adoptada po

Haskell propone una revisión del informe de Haskell 2010 antes de fin de año

David Binder, desarrollador de la comunidad Haskell, publicó en el blog oficial del lenguaje una hoja de ruta para producir una versión revisada del Haskell 2010 Language Report, el documento normativo del lenguaje que no se actualiza desde hace 16 años. El autor sostiene que el informe se ha quedad

Perspec 1.0: aplicación de escritorio para corregir la perspectiva de imágenes

Perspec es una aplicación de escritorio gratuita y de código abierto diseñada para corregir la perspectiva de fotografías de documentos, recibos y cualquier otra imagen. Su versión 1.0, publicada tras nueve años de desarrollo, se centra en un flujo de trabajo ágil pensado para procesar lotes de imág

Planes para el fin de semana: volver a Final Fantasy XIV y aprender Haskell

Un usuario comparte en una comunidad en línea sus planes para el fin de semana, que combinan ocio y aprendizaje de programación. Su principal actividad lúdica será retomar Final Fantasy XIV, juego al que se ha vuelto a enganchar tras varios años de pausa y en el que acaba de comenzar la expansión He

Simulador de circuitos digitales en Haskell replicando SICP

Este artículo forma parte de una serie que explora ejercicios del libro 'Structure and Interpretation of Computer Programs' (SICP) de Abelson y Sussman, trasladándolos a Haskell. En esta entrega, el autor replica en Haskell el simulador de circuitos digitales que SICP implementa usando estado mutabl

Programación funcional desde cero: motivación y funciones matemáticas

Este artículo, primero de una serie titulada "Programación funcional desde los principios básicos", explica qué es la programación funcional y por qué importa. Presenta las cuatro grandes familias de paradigmas de programación (imperativo procedural, orientado a objetos, lógico y funcional) y enmarc

Codificación de tipos existenciales en Haskell mediante funciones lineales

Este artículo presenta una técnica para codificar tipos existenciales en Haskell que permite que aparezcan 'desnudos' en las signaturas de tipo, sin necesidad de envolverlos en un constructor GADT ni recurrir a la transformación CPS (estilo paso de continuación). La codificación se apoya en funcione

Verse: ¿un nuevo lenguaje de scripting para el Unreal Engine 6?

El vídeo del canal Logan Smith analiza Verse, el lenguaje de scripting que Epic Games está desarrollando para sustituir al sistema de Blueprints en Unreal Engine 6. El autor parte de una pregunta provocadora: ¿tiene sentido aprender un nuevo lenguaje de programación en plena era de la inteligencia a

Cómo construir un sistema de roles sobre servant-auth en Haskell

Este artículo describe el diseño e implementación de una librería que añade un sistema de roles y permisos sobre servant-auth, el mecanismo de autenticación de Servant, un framework para construir APIs en Haskell. El objetivo es permitir definir manejadores (handlers) distintos según el rol del usua

Shake Blog: un generador de sitios estáticos en Haskell con Shake

Shake Blog es un proyecto inicial de código abierto para construir un generador de sitios estáticos personalizado utilizando Shake, la biblioteca de Haskell para definir reglas de construcción, y el propio lenguaje Haskell. Funciona como una base lista para bifurcar y adaptar, no como una plataforma

Despliegue de árboles en anchura en Haskell: de colas a mónadas libres

Este artículo técnico analiza cómo construir un recorrido en anchura (breadth-first) sobre árboles en Haskell mediante un enfoque basado en niveles, composicional y dinámico. Partiendo de los folds y traversals en anchura ya conocidos —incluidos los trabajos de Okasaki (ICFP 2000) y la biblioteca tr

Connections: conversiones entre tipos numéricos en Rust con garantías Galois

La biblioteca Rust `connections` (cmk/connections) implementa las conexiones de Galois como valores de primera clase para realizar conversiones entre tipos parcialmente ordenados —por ejemplo, de `f64` a `f32`, de `Duration` a segundos o de `f32` a `u32` y de ahí a `IpAddr`—. El objetivo declarado e

Equipos de Tambara: módulos monoidales en una doble categoría

Bartosz Milewski presenta en este artículo el concepto de "equipo de Tambara" (Tambara equipment), una estructura categórica que generaliza los equipos de proarrows al ámbito de los actegorías y los módulos de Tambara. Tras recordar su trabajo previo sobre óptica functorial —desarrollado junto a inv

Actegorías: la base categórica de las ópticas en programación

Las actegorías son una construcción de la teoría de categorías que permite que una categoría soporte la acción de una categoría monoidal, multiplicando o escalando sus objetos. En programación, ocupan un papel central en las llamadas ópticas (lentes, prismas, traversals), ya que estas se modelan com

Programación dirigida por datos en Haskell, al estilo SICP

Este artículo del blog Entropic Thoughts recorre la sección 2.4.3 de Structure and Interpretation of Computer Programs (SICP), de Abelson y Sussman, y traslada su ejemplo de programación dirigida por datos al lenguaje Haskell. La idea central es representar números complejos de dos formas —rectangul

EDSLs de expresiones tipadas en Haskell extremo (parte 1)

Este artículo de Justin Le inaugura una serie en tres partes dedicada a explorar el extremo más sofisticado del sistema de tipos de Haskell. El objetivo es construir un lenguaje de expresiones tipado embebido (un EDSL) que permita especificar un programa una sola vez y reutilizarlo de varias formas:

SecretSpec 0.13 lleva SDKs nativos para Python, Node.js, Go, Ruby y Haskell

SecretSpec ha publicado la versión 0.13, que incorpora SDKs nativos para cinco lenguajes de programación: Python, Node.js/TypeScript, Go, Ruby y Haskell. Hasta ahora, las aplicaciones escritas en esos lenguajes solo podían resolver los secretos declarados en el manifiesto `secretspec.toml` recurrien

Cómo dibujar regiones finitas de los mosaicos de Penrose en Haskell

Este artículo describe, paso a paso, cómo generar regiones finitas de los mosaicos no periódicos de Roger Penrose formados por cometas (kites) y dardos (darts) utilizando el paquete Diagrams de Haskell. El trabajo surge de una colaboración con Stephen Huggett sobre propiedades matemáticas de estos t

Validar no es parsear: tipos de marca en TypeScript al estilo Haskell

Este artículo recupera el principio "parse, don't validate" de Alexis King y lo aplica a TypeScript, un lenguaje cuyo sistema de tipos estructural no obliga a distinguir entre datos sin revisar y datos ya verificados. La idea central es que un validador devuelve true o false y olvida lo que comprobó

Koan en Haskell: cadenas no vacías validadas en tiempo de compilación

Bellroy comparte una técnica avanzada en Haskell para representar estados inválidos como imposibles en el sistema de tipos. La pieza central es NonEmptyText, un tipo que garantiza en compilación que una cadena tenga al menos un carácter, construido a partir de RequiredTypeArguments, introducido en G

Prism: un lenguaje funcional impuro con efectos tipados

Prism es un compilador funcional de prueba de concepto desarrollado por Stephen Diehl durante los últimos tres años. Su propuesta central consiste en modelar los efectos computacionales —mutación, excepciones, generadores, entrada/salida— dentro del sistema de tipos, de modo que el programador decla

Inferencia de tipos para registros anónimos: guía introductoria

Este artículo explica, desde cero y con ejemplos, cómo funciona la inferencia de tipos para los registros anónimos, una pieza que el autor considera clave y todavía недостаточно aprovechada en los lenguajes estáticamente tipados. Un registro anónimo es aquel que no necesita una declaración de tipo p

Inferencia de tipos para registros anónimos: una introducción

Los registros anónimos —estructuras de datos con campos identificados por nombre que no requieren una declaración previa de tipo— son habituales en lenguajes dinámicos como JavaScript (objetos), Python (diccionarios), Ruby (hashes) o Nix (attribute sets), y también aparecen en el formato JSON. Sin e

H2JVM: biblioteca en Haskell para generar bytecode de la JVM

H2JVM es una biblioteca en Haskell, aún en fases muy iniciales, que permite generar bytecode de la máquina virtual de Java (JVM) desde código funcional con un enfoque de alto nivel. Su objetivo es que los desarrolladores de compiladores hacia la JVM no tengan que lidiar con los detalles de bajo nive

Robar ideas a la biología para acelerar la compilación de Haskell

GHC, el compilador de Haskell, incluye una extensión llamada ApplicativeDo que traduce bloques do-notation en operaciones aplicativas (<*>) cuando no existen dependencias entre instrucciones, habilitando paralelismo automático. Sin embargo, el algoritmo que produce la planificación óptima de esas op

Director ejecutivo de Haskell Foundation deja su cargo en junio

La Haskell Foundation anuncia cambios significativos para 2026. Su director ejecutivo, José, deja su cargo en junio tras años de servicio durante momentos difíciles. La Junta Directiva aprovecha esta transición para reestructurar la organización, con el objetivo de dedicar la mayor parte de los recu

Nueva herramienta hsrs permite interoperabilidad type-safe entre Rust y Haskell

Una nueva herramienta de código abierto llamada hsrs permite la interoperabilidad type-safe entre Rust y Haskell mediante enlaces FFI generados automáticamente. El desarrollador Harmont-Dev publicó el proyecto en GitHub, ofreciendo un sistema de anotaciones que simplifica la integración entre ambos

Implementan equipamiento profunctor en Haskell como verificación práctica

El artículo presenta una implementación práctica en Haskell del concepto matemático de 'equipamiento profunctor' (profunctor equipment), una estructura proveniente de la teoría de categorías Higher Order Topos Theory. El autor, Bartosz Milewski, decide usar Haskell como 'juguete' para verificar comp

Librería Haskell optimiza cálculos de arrays de alto rendimiento

El proyecto Data.Array.Accelerate, desarrollado por el equipo AccelerateHS, es una librería Haskell que define un lenguaje embebido especializado para cálculos de arrays de alto rendimiento. Esta herramienta permite expresar computaciones sobre arrays multidimensionales regulares mediante operacione

Desarrollador Haskell implementa pruebas visuales golden para librería CAD

Un desarrollador Haskell ha implementado técnicas de 'Golden Testing' o pruebas de regresión visual para su librería Waterfall-CAD, una herramienta de CAD programable lanzada en 2023. El autor, Joe Warren, enfrentaba dificultades para probar su librería debido a que los outputs son modelos 3D comple

Haskell: Usa `do` para registros más claros

Este artículo del blog de HaskellForAll aborda una recomendación de estilo para la construcción de registros (tipos de datos) en Haskell: priorizar la notación `do` sobre los operadores `Applicative` (como `<$>` y `<*>`). Aunque ambos métodos son válidos, la notación `do` ofrece ventajas significati

Herramienta automatiza pedidos de REWE con línea de comandos

Un desarrollador ha creado una herramienta de línea de comandos (CLI) llamada 'korb' que permite automatizar los pedidos de comestibles de REWE a través de sus APIs. Escrita en Haskell, la herramienta está diseñada para ser utilizada por agentes o asistentes para organizar las compras de REWE, gener

Haskell: Binarios más pequeños con nuevas técnicas

Desarrolladores de Haskell han descubierto técnicas para reducir significativamente el tamaño de los binarios de Haskell, que a menudo pueden superar los 100MB debido a las dependencias. El método principal implica el uso de opciones de enlace como `-split-sections` y `--gc-sections` para eliminar c

Monuses optimizan búsqueda en montículos

Este artículo explora una estructura algebraica llamada 'monus' y su aplicación en algoritmos de búsqueda y ordenamiento, particularmente en el contexto de montículos (heaps). Un montículo es una estructura de datos en forma de árbol donde el valor de cada nodo es menor o igual que el de sus hijos,

Coalton 0.2: Funciones de Aridad Fija Mejoran el Lenguaje

El lenguaje de programación funcional Coalton está introduciendo cambios significativos en su próxima versión (0.2 Preview), enfocados en mejorar la eficiencia, la claridad y la flexibilidad. El cambio más notable es la adopción de funciones de aridad fija, reemplazando el sistema de funciones curri

Scala: Concurrencia optimizada con técnica inspirada en Haskell

Este artículo explora una técnica avanzada para mejorar la concurrencia en Scala, inspirada en el lenguaje Haskell y su biblioteca Haxl. El problema que aborda es cómo optimizar la ejecución de múltiples consultas de datos, evitando una serie de llamadas secuenciales a la base de datos. En Haskell,

Dentro de los lenguajes 'Lil' Fun Langs: cómo funcionan

Este artículo explora la arquitectura interna de los lenguajes de programación, específicamente aquellos con características inspiradas en Haskell, a los que se refiere como "Lil' Fun Langs". El objetivo es desmitificar cómo funcionan estos lenguajes, más allá de su sintaxis superficial. La explicac

Navega código por significado: nueva herramienta para desarrolladores

Un desarrollador ha creado una nueva herramienta llamada 'Semantic Navigator', disponible en GitHub (Gabriella439/semantic-navigator), que permite a los programadores explorar repositorios de código no por directorios, sino por significado. Esta herramienta busca ofrecer una alternativa a las interf

Mini-lenguajes: programación en código reducido

Este artículo de Taylor Troesh explora el fascinante mundo de los "Lil' Fun Langs", o lenguajes de programación muy pequeños. La idea central es que es posible crear lenguajes de programación funcionales y con tipado estático con una cantidad sorprendentemente baja de código. El artículo no solo pre

Diseño con Tipos: Analiza, No Valides

El artículo explora el concepto de diseño impulsado por tipos (type-driven design), una metodología que el autor ha tenido dificultades para explicar de manera concisa. La clave para comprender este enfoque reside en la idea de "parse, don't validate". El autor ilustra esto a través de ejemplos en H

Programación Funcional: El Peligro de la Confianza Excesiva

El artículo de Ian Duncan critica la tendencia en la programación funcional (FP) a enfocarse excesivamente en la corrección local del código, lo que lleva a una falsa confianza en las propiedades del sistema en su conjunto. Argumenta que, independientemente del paradigma de programación, los desarro

Free Monads: Listas en Haskell y Teoría de Categorías

El artículo explora el concepto de 'Free Monads' en Haskell, presentándolos como una forma de listas en la categoría de endofuntores. Se profundiza en la teoría de categorías, incluyendo conceptos como Endo, Natural Transformations, Product functors y HFunctors, para explicar la relación entre Free