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

Tipos líquidos como barrera de seguridad para agentes de IA

Alcides Fonseca sostiene que los sistemas de permisos actuales de los agentes de inteligencia artificial —ya sean permisos granulares por solicitud o un modo “yolo” sin restricciones— son insuficientes para proteger datos críticos. El problema se agrava con el llamado “trío letal”: cuando un agente

Desmitificando el concepto de tipo en programación

Este ensayo, escrito como complemento de un texto anterior titulado 'Type Theory Weary', cuestiona la necesidad de tratar los tipos como un constructo especial dentro de la informática y la lógica. El autor sostiene que los sistemas de tipos surgieron históricamente para resolver problemas que en su

Principia Mathematica: una obra moderna y reveladora en sus nociones básicas

Principia Mathematica, la obra monumental de Alfred North Whitehead y Bertrand Russell publicada a partir de 1910 por la Cambridge University Press, es célebre por la extensión de sus demostraciones —se dice que emplea unas mil páginas en probar que 1+1=2— y por un nivel de detalle concebido para de

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

Contraejemplos en sistemas de tipos: una colección de casos sutiles

Counterexamples in Type Systems es una obra de referencia compilada por Stephen Dolan —con colaboraciones reconocidas de Andrej Bauer, Leo White y Jeremy Yallop— que reúne treinta y un contraejemplos cuidadosamente seleccionados para ilustrar los puntos delicados, las trampas y las excepciones de lo

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

Una charla con un niño de seis años sobre programación funcional

¿Cómo se explica un concepto avanzado de informática a un niño de seis años? Este ensayo, escrito en primera persona por un académico vinculado a la programación funcional, narra una conversación espontánea con su hijo menor mientras leía la tesis de habilitación de Janis Voigtländer sobre teoremas

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

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