Noticias que mencionan Haskell

lang_narrow: un lenguaje con tipado por flujo y tipos union

lang_narrow es un lenguaje de programación experimental diseñado para demostrar la viabilidad del tipado por flujo (flow typing) mediante tipos union estructurales. A diferencia de los tipos algebraicos de datos (ADT) cerrados, este sistema permite restringir dinámicamente los tipos de los valores e

Diferencias fundamentales entre typeclasses y sistemas de módulos

Los sistemas de programación modernos presentan una confusión persistente entre los typeclasses, presentes en lenguajes como Haskell o Rust, y los sistemas de módulos, típicos de OCaml. Aunque ambos mecanismos comparten una base técnica común, sus objetivos semánticos son distintos. Los typeclasses

Diferencias técnicas entre foldl y foldr en Haskell

El artículo explica las diferencias fundamentales entre las funciones foldl y foldr en el lenguaje Haskell, aclarando que ambas recorren la estructura de la misma izquierda a derecha, pero difieren en su asociatividad. En lenguajes estrictos, foldl permite una recursión en cola que consume espacio c

Prototipado de una librería de algoritmos genéticos en Haskell

Este artículo técnico documenta la implementación de una librería de algoritmos genéticos en Haskell, utilizando esquemas de recursión y computaciones monádicas. El autor explica cómo estructurar el contexto de ejecución mediante la monada RWS para gestionar la configuración, el generador de números

Optimización de compilaciones en GHC para Haskell

La presentación de Teo Camarasu, desarrollada por la Fundación Haskell, ofrece una guía técnica para mejorar la velocidad de compilación en proyectos de Haskell utilizando el compilador GHC. El objetivo principal es abordar el cuello de botella que surge cuando los proyectos crecen, donde los tiempo

El patrón 'Parse, don't validate' en Rust y su aplicación práctica

El patrón 'Parse, don't validate' (parsear, no validar) es un enfoque de diseño de software que utiliza el sistema de tipos para garantizar invariantes, eliminando la necesidad de validaciones explícitas en el código de cliente. Este artículo analiza la aplicación de este concepto en el lenguaje Rus

Guía para mantener el placer de programar con agentes de IA

El artículo propone una estrategia para programadores que desean mantener la satisfacción creativa de su trabajo mientras adoptan herramientas de inteligencia artificial generativa. El autor, un programador de Haskell, argumenta que delegar completamente la codificación en agentes de IA degrada la c

Implementación técnica del formato Parquet en Haskell

El formato Parquet se ha convertido en el estándar de facto para el almacenamiento de datos en el ecosistema de ciencia de datos, ofreciendo una combinación superior de compresión y eficiencia en la consulta. Para los desarrolladores de Haskell, la capacidad de leer y escribir archivos Parquet es es

Técnica de Haskell para parsear JSON sin AST intermedio

El artículo técnico detalla una estrategia para parsear objetos JSON en Haskell que elimina la representación intermedia (IR) o árbol de sintaxis abstracta (AST) tradicional. Este enfoque busca optimizar el rendimiento al evitar la asignación de memoria adicional y el cálculo redundante asociado a l

Tilia: un formateador de Haskell que resuelve problemas de CPP y fixities

Tilia es un formateador de código para el lenguaje Haskell desarrollado desde cero, diseñado para abordar tres desafíos técnicos persistentes en la herramienta: el manejo correcto de comentarios, la inferencia precisa de las fixities de operadores y el soporte para la preprocesación de C (CPP). A di

Sintaxis de declaración de tipos en lenguajes de programación

La sintaxis de declaración de tipos varía significativamente entre los lenguajes de programación modernos, reflejando influencias históricas y decisiones de diseño específicas. La mayoría de los lenguajes actuales, como Java, C# y D, han adoptado la sintaxis de C, aunque esta puede generar ambigüeda

Algoritmos de búsqueda en árboles algebraicos sin compresión

Un artículo técnico detalla cómo realizar búsquedas sobre árboles algebraicos sin necesidad de convertirlos en mapas de adyacencia, eliminando así la compresión de datos. El objetivo es ejecutar algoritmos como Dijkstra en O(s log s) tiempo, donde s es el tamaño de la expresión, en lugar de O(n²) qu

El lema de Yoneda en categorías dobles mediante profuntores

El artículo explora la traducción del lema de Yoneda, un pilar fundamental de la teoría de categorías, al lenguaje de las categorías dobles. El autor argumenta que, aunque las construcciones estándar como los límites ponderados o las extensiones de Kan se generalizan fácilmente usando profuntores, l

Inyectar funciones en datos puros de Haskell mediante typeclasses

El artículo técnico explora la técnica de 'defuncionalización' en Haskell para permitir que las funciones se comporten como datos puros dentro de estructuras de datos extensibles. El autor argumenta que, aunque las funciones suelen ser complejas y difíciles de serializar, es posible integrarlas en t

Debate sobre ingeniería de software: ¿programación artesanal o 'vibecoding'?

Un desarrollador de software cuestiona la creciente dicotomía en la industria entre los 'ingenieros de software' serios y los 'programadores artesanales' que priorizan la experiencia sobre el resultado. El autor argumenta que la precisión, la atención al detalle y la fiabilidad son características d

Metacarp: un nuevo compilador autohospedado para el lenguaje Carp

El desarrollador Veit Heller ha presentado Metacarp, una segunda implementación del lenguaje de programación Carp, escrita íntegramente en Carp. A diferencia de la referencia original en Haskell, Metacarp compila a C y cuenta con un backend LLVM que permite la compilación JIT (Just-In-Time) y sesion

Vaibhav Sagar analiza por qué las empresas abandonan el uso de Haskell

La adopción de Haskell en el sector empresarial a menudo se ve interrumpida por factores organizativos y financieros que superan las capacidades técnicas del lenguaje. Vaibhav Sagar, mantenedor de IHasKell, examina en su presentación en ZuriHac 2026 las dinámicas que llevan a las compañías a dejar d

Cómo evitar fugas de espacio que afectan la corrección en Haskell

Las fugas de espacio en Haskell pueden limitar el crecimiento de la memoria o provocar errores de corrección cuando una estructura thunk conserva referencias o aplaza evaluaciones necesarias. Este artículo propone prevenirlas mediante patrones de programación defensivos y detectarlas con perfiles de

Rust: cuando el tipo vacío no es el tipo bottom

El tipo `!` (never) se añadió recientemente a Rust como anotación válida en cualquier posición del código, con su estabilización prevista para Rust 1.100. Aunque suele presentarse como el tipo bottom de la teoría de tipos, el artículo explica que en Rust se trata en realidad del tipo vacío, no del t

Por qué los argumentos de función no son colores de función

Este ensayo técnico distingue entre dos tipos de cambios que puede sufrir una función en una pila de llamadas. Un cambio "normal" —como añadir un parámetro— afecta solo al llamador directo y puede encapsularse mediante programación estructurada; en la práctica, la cadena de propagación suele rompers

Guía incompleta sobre la evaluación perezosa en Haskell

La evaluación perezosa (lazy evaluation) es el mecanismo estándar con el que se ejecutan los programas escritos en Haskell y, por tanto, determina tanto el tiempo de cómputo como el consumo de memoria de estos. Más allá de su impacto en el rendimiento, constituye una herramienta expresiva que permit

Cómo simular expresiones if dependientes en Haskell sin tipos dependientes

Este artículo explica un truco de programación en Haskell que permite escribir expresiones `if` cuyos tipos de retorno varían según el valor de la condición, algo que a primera vista parecería exigir tipos dependientes, pero que en realidad solo necesita la extensión `RebindableSyntax`. El autor pa

Bluefin redefine sus capacidades como sistema de efectos

Bluefin se presenta principalmente como un sistema de capacidades y, en segundo lugar, como un sistema de efectos para Haskell. Esta librería, publicada por primera vez a principios de 2024, se inspira en effectful de Andrzej Rybczak y funciona como una envoltura ligera sobre el tipo IO de Haskell.

Coherencia y reglas de instancias huérfanas en sistemas de tipos

Las typeclasses (Haskell) y los traits (Rust) son mecanismos de sobrecarga que permiten resolver una llamada a método en función de los tipos de sus argumentos. Esta resolución descansa sobre una propiedad esencial: la coherencia. Un sistema de tipos es coherente cuando, para cualquier restricción g

Codificación tagless inicial en Rust con GADT sin coste en tiempo de ejecución

El patrón "tagless final" es una abstracción habitual en programación funcional para construir lenguajes de dominio específico con múltiples intérpretes —evaluación, pretty-printing, optimización— sobre una misma lógica. Este artículo explora su variante "tagless inicial", basada en tipos algebraico

El patrón de diseño ReaderT en Haskell: guía práctica

El patrón ReaderT es una guía de arquitectura recomendada en Haskell para estructurar aplicaciones con estado de configuración y acceso a funciones globales. Consiste en definir un tipo de datos central, llamado habitualmente Env, que agrupa toda la configuración en tiempo de ejecución y las funcion

Reproducir teselaciones de Escher en Haskell con la biblioteca diagrams

Este artículo muestra cómo reconstruir en Haskell una de las teselaciones de animales del artista holandés M. C. Escher —en la que el plano se cubre completamente con figuras de aves que encajan entre sí sin solaparse— empleando la biblioteca diagrams y su backend Rasterific para generar una imagen

La iglesia del TigerBeetle: cuando una charla técnica se convierte en sermón

Un asistente a la conferencia Systems Distributed 2026, celebrada en el Institute of Contemporary Art de Boston, relata su experiencia durante la charla final titulada Mission-Critical, impartida por Joran Dirk Greef, creador de TigerBeetle. Según el cronista, la presentación combinó definiciones ta

Tidal Cycles: live coding de patrones algorítmicos en Haskell

Tidal Cycles es un entorno de live coding libre y de código abierto orientado a la creación de patrones algorítmicos en tiempo real. Está escrito en Haskell y delega la síntesis de audio y el control MIDI en SuperCollider, otro proyecto también open source. Su modelo central son los patrones de tiem

Opus: un dialecto Lisp minimalista inspirado en las f-expressions de Kernel

Opus es un dialecto Lisp de ámbito estático y núcleo mínimo, implementado en Haskell y compilado a WebAssembly. Su diseño se apoya en la semántica de las f-expressions del lenguaje Kernel (desarrollado por John Shutt) y emplea estilo de paso de continuaciones (CPS) para el control de flujo. El obje

openleetcode: un runner local y de código abierto para practicar LeetCode

openleetcode es una herramienta de línea de comandos escrita en Haskell que permite ejecutar en local las soluciones a problemas de LeetCode contra suites de pruebas abiertas y versionadas en el repositorio. Su objetivo declarado es "democratizar" los tests de la plataforma: en lugar de depender del

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

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

Futhark incorpora funciones recursivas tras casi una década sin ellas

Futhark, un lenguaje funcional orientado a la computación paralela sobre datos, ha carecido de soporte para funciones recursivas durante casi toda su existencia. La ausencia no respondía a una postura ideológica contra la recursión —el propio compilador contiene definiciones recursivas—, sino a la f

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

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

Tutorial de parser combinators: implementación sencilla en Scheme

Los parser combinators son una técnica para construir analizadores sintácticos componiendo pequeñas funciones que reconocen unidades de texto. Este tutorial explica, de forma práctica y accesible, cómo construir una biblioteca mínima de análisis sintáctico usando Scheme, aunque los principios son ap

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

Enseñar Forth a adolescentes: una elección pedagógica contracorriente

Forth, el lenguaje concatenativo y orientado a pila creado en 1970, es una opción poco habitual para introducir a jóvenes en la programación. Frente a la hegemonía de Python o entornos visuales como Scratch, un docente decidió emplearlo con estudiantes de secundaria y bachillerato, y comparte aquí s

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

El lenguaje como espacio latente diseñado

El ingeniero Joshua Barretto propone en un ensayo que el lenguaje humano funciona como un espacio latente de alta entropía: una herramienta tecnológicamente moldeada durante milenios que facilita el razonamiento conceptual, del mismo modo que un sistema de tipos fuerte en lenguajes como Rust o Haske

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

Los beneficios del destructuring exhaustivo en Rust

En el desarrollo de software, la mantenibilidad del código es crucial, y Rust ofrece herramientas para mejorarla. Una de ellas es el destructuring exhaustivo, que consiste en desestructurar explícitamente todos los campos de una estructura en lugar de usar el patrón '..' para ignorar los no utilizad

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

Julia y el problema de los dos lenguajes en la computación científica

La computación científica arrastra desde hace décadas un dilema conocido como el problema de los dos lenguajes: los investigadores prototipan en Python por su facilidad, pero reescriben las partes críticas en C++ o Rust para ganar rendimiento, porque Python resulta demasiado lento. En 2012, cuatro c

Filtros Lua en Pandoc: manipulación del AST sin dependencias externas

Los filtros de Pandoc son programas que permiten transformar el árbol de sintaxis abstracta (AST) del documento entre las fases de análisis y escritura. Los filtros tradicionales trabajan con una representación en JSON y pueden escribirse en cualquier lenguaje, pero presentan dos inconvenientes clar

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

La realidad esconde una cantidad sorprendente de detalles

Este ensayo reflexiona sobre un hallazgo aparentemente mundano, pero con profundas implicaciones intelectuales: cuando uno se acerca de verdad a cualquier actividad, descubre que la realidad contiene una cantidad sorprendente de detalles con consecuencias prácticas reales. El autor ilustra esta idea

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

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

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

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

Go: la alternativa simple para el desarrollo backend

Un artículo en blainsmith.com aboga por el uso del lenguaje de programación Go para simplificar el desarrollo backend. El autor critica la complejidad creciente de los proyectos backend modernos, a menudo construidos con múltiples herramientas y frameworks, argumentando que Go ofrece una alternativa

Rocq Prover: 40 años de verificación formal, un nuevo nombre

Después de más de 40 años de investigación, el sistema de verificación formal conocido anteriormente como Coq Proof Assistant ha sido renombrado como Rocq Prover. Desarrollado inicialmente en 1984 por Thierry Coquand y Gérard Huet en INRIA-Rocquencourt, y posteriormente ampliado por Christine Paulin

Desarrolladores buscan fin a la fragmentación en la nube

Una creciente frustración entre desarrolladores por la fragmentación de la infraestructura y la falta de interoperabilidad entre proveedores de servicios en la nube ha surgido recientemente en la comunidad tecnológica. El problema radica en que cada proveedor impone sus propias herramientas y format

Scheme: repositorio desacoplado para datos

Este artículo presenta un enfoque innovador para la capa de datos en proyectos Scheme, buscando resolver un problema común: el acoplamiento estrecho entre la capa de control y la implementación específica de la base de datos (en este caso, SQLite). El autor, proveniente de un background en lenguajes

Lean: el lenguaje que verifica su propio código

Este artículo explora el concepto de un "lenguaje de programación perfectible", ejemplificado por Lean. La idea central es que un lenguaje perfectible no solo permite escribir código, sino también expresar propiedades sobre ese código dentro del propio lenguaje. Esto abre la puerta a la verificación

Surelock: Nueva Biblioteca Rust Evita Bloqueos de Código

Desarrolladores de Rust han presentado 'Surelock', una nueva biblioteca diseñada para eliminar los bloqueos (deadlocks) en el código. Los bloqueos, difíciles de detectar y que pueden causar fallos inesperados en sistemas, son un problema común en la programación concurrente. Surelock aborda este pro

Kanjideck: Fallo por falta de espacio en disco

Un servidor dedicado a la distribución de archivos digitales para clientes de Kanjideck sufrió una interrupción la noche del 31 de marzo debido a un rápido agotamiento del espacio en disco. El servidor, alojado en Hetzner con 4GB de RAM y 40GB de disco, se vio abrumado por una gran cantidad de usuar

SOM: Nuevo Lenguaje de Programación con Múltiples Versiones

Un nuevo lenguaje de programación llamado 'SOM' ha surgido, destacando por su enfoque en la claridad de implementación sobre el rendimiento absoluto. Desarrollado por SOM-st, SOM cuenta con nueve implementaciones distintas, que varían en tamaño (de 2.5k a 8k líneas de código) y técnicas de implement

Koru: Nuevo lenguaje desafía el rendimiento de C

Un nuevo lenguaje de programación llamado Koru está sorprendiendo al mundo de la informática al demostrar un rendimiento comparable, e incluso superior en algunos casos, a lenguajes de alto rendimiento como C, Rust y Zig. Según pruebas realizadas por los desarrolladores de Koru, sus 'kernels' (unida

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

Estadística Bayesiana: Guía para científicos de datos

Este artículo explica de manera didáctica las estadísticas bayesianas, un tema que a menudo resulta confuso para los científicos de datos. La estadística bayesiana se presenta como una alternativa a la estadística frecuentista, una metodología dominante pero a veces carente de intuición. La principa

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

Error en compilador Rust al emular tipos avanzados

Este artículo técnico explora una peculiaridad en el sistema de tipos de Rust y cómo un intento de emular tipos de orden superior (HKTs) llevó a un error de desbordamiento en la evaluación de requisitos de traits, causando que el compilador fallara. El autor, en su intento de crear un lenguaje de sc

Emacs: Técnicas Internas para Manejar Tipos de Datos

Este artículo del blog de The Cloudlet explora técnicas de programación de sistemas utilizadas en GNU Emacs para representar valores Lisp de manera eficiente. El núcleo del problema radica en cómo manejar variables que deben contener valores de diferentes tipos en tiempo de ejecución, preservando la

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,

Comunidades online: ¿Facebook o Google, cuál construir?

Construir una comunidad de desarrolladores exitosa no es tan sencillo como crear un foro o un canal de Slack. El artículo de mooreds.com explora una distinción crucial: ¿estás construyendo una comunidad para que la gente 'se relaje' (como Facebook) o para que obtengan respuestas rápidas (como Google

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