La inferencia de tipos tiene problemas de usabilidad

La inferencia de tipos —la capacidad de un compilador de deducir automáticamente el tipo de una variable a partir de una asignación, sin que el programador lo declare— se ha convertido en una característica estándar en los lenguajes modernos. Go, Rust, Swift, Scala, Kotlin, Zig o Nim la incluyen de

deft: comprobaciones de tipo opcionales para Janet con tipado gradual

deft es un módulo para el lenguaje de programación Janet que añade comprobaciones de tipo opcionales aplicables en tiempo de ejecución, en compilación o con anticipación (ahead-of-time). El proyecto aplica los principios del tipado gradual descritos por Siek y Taha, junto con el cálculo de culpa (bl

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

Conformidad frente a comprensión: el coste de los oráculos ha caído

En un ensayo publicado el 27 de junio de 2026, el ingeniero de software jubilado que firma como "rubys" reflexiona sobre cómo la inteligencia artificial ha transformado la producción de artefactos que antes requerían instituciones, como los oráculos de conformidad. El autor parte de una anécdota de

Las trampas de analizar declaraciones con inferencia de tipos en C

En C moderno, la palabra clave auto permite declarar variables con tipo inferido, pero su análisis sintáctico encierra ambigüedades que enfrentan a GCC y Clang en sentidos opuestos. Cuando en un ámbito interno existe un typedef con el mismo nombre que el identificador de la declaración, ambos compil

Por qué ML y OCaml son buenas opciones para escribir compiladores

El ingeniero Dwight VandenBerghe sostiene que los lenguajes de la familia ML —especialmente OCaml y, en menor medida, SML/NJ— ofrecen una combinación de características que los hacen especialmente adecuados para desarrollar compiladores. El artículo, publicado en 1998 en el grupo comp.compilers, rep

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

Cómo TypeScript infiere variables de tipo: una guía detallada

Este artículo explora el proceso de inferencia de variables de tipo en TypeScript, un aspecto complejo pero crucial para comprender cómo el lenguaje asigna tipos a variables definidas en funciones. El artículo detalla las reglas y fases del proceso, comenzando con la 'Colección de Candidatos', donde

Elixir v1.20 ya es un lenguaje de tipado gradual sin anotaciones

El equipo de Elixir ha publicado la versión 1.20 del lenguaje de programación, que incorpora un sistema de tipado gradual sin necesidad de añadir anotaciones de tipo. Se trata del primer hito de desarrollo del proyecto de tipos, iniciado en 2022, que convierte a Elixir en un lenguaje gradualmente ti

Mejoran inferencia de tipos para errores más claros

El artículo presenta un nuevo algoritmo de inferencia de tipos llamado 'Quadratic Micropass Type Inference', diseñado para mejorar la claridad de los mensajes de error en lenguajes de programación con inferencia de tipos. La inferencia de tipos, una característica que permite al compilador deducir e

Python: Verificación de tipos falla con contenedores vacíos

Un nuevo análisis revela que los verificadores de tipos de Python tienen dificultades para manejar contenedores vacíos, lo que genera diferentes enfoques con implicaciones para la seguridad de tipos y la experiencia del desarrollador. Cuando una función crea un contenedor vacío (como una lista o dic

Julia: Optimiza tu código con estos consejos

Este documento de Julia Language ofrece consejos prácticos para optimizar el rendimiento del código Julia. El objetivo principal es ayudar a los desarrolladores a escribir código más rápido y eficiente. La optimización en Julia se centra en evitar problemas comunes que ralentizan la ejecución, como

Tipado: ¿Hindley-Milner o Bidireccional?

Este artículo aborda una pregunta común entre los desarrolladores de lenguajes de programación: ¿deberían usar un sistema de tipos Hindley-Milner (HM) o Bidireccional (Bidir)? La respuesta, según el autor, no es tan simple como elegir entre dos opciones mutuamente excluyentes. La verdadera pregunta