- Hazel es un entorno web de programación funcional en vivo centrado en typed holes, que permite verificar tipos, manipular y ejecutar incluso programas incompletos
- Su idea central es modelar estados incompletos como espacios en blanco, errores de tipo y conflictos de merge como holes, reduciendo las zonas donde el editor pierde significado
- Los programas incompletos que se pueden crear en Hazel están definidos de forma estática y dinámica, y pueden tener tipos incompletos y resultados de ejecución incompletos
- Está implementado para un lenguaje funcional de la familia Elm/ML, y se usa como base para investigación en educación en programación, edición colaborativa, aprendizaje de pruebas y completado de código con IA
- Es un proyecto de investigación open source liderado por el Future of Programming Lab de la University of Michigan, con un build web de prueba y el código fuente en GitHub disponibles públicamente
Idea central de Hazel
- Hazel es un entorno de programación funcional en vivo construido alrededor de typed holes
- Incluso con programas incompletos, permite seguir trabajando en tareas como:
- verificación de tipos
- manipulación
- ejecución
- El objetivo es crear un entorno que mantenga feedback significativo aun cuando el código en edición esté en un estado roto
Cómo maneja programas incompletos
- En el proceso normal de programación, es común que el texto del programa quede en estados formalmente incompletos
- espacios en blanco
- errores de tipo
- conflictos de merge
- Las definiciones tradicionales de lenguajes de programación no asignan significado formal a estas estructuras, lo que dificulta tratar incluso el comportamiento de partes completas del código como feedback en vivo
- Para ofrecer completado de código, verificación de tipos y navegación de código sin interrupciones, los editores y herramientas terminan dependiendo de heurísticas complejas
- Hazel modela los programas incompletos como programas con holes
- un hole representa una parte faltante del programa
- funciona como una membrana que envuelve partes con errores o zonas en conflicto en entornos colaborativos
- Este enfoque se basa en la teoría contextual de tipos modales y en la teoría de tipos gradual
Entorno Hazel y modelo de ejecución
- Hazel se está implementando como un entorno de programación web para un lenguaje funcional similar a Elm/ML
- Todos los programas incompletos que pueden construirse con el lenguaje de acciones de edición de Hazel están definidos de forma estática y dinámica
- pueden tener tipos incompletos
- al ejecutarse, pueden producir resultados incompletos
- Gracias a esta característica, Hazel se usa como plataforma para investigar futuros entornos de programación y educación en programación
Visión de investigación y materiales relacionados
- Toward Semantic Foundations for Program Editors: visión de investigación sobre fundamentos semánticos para editores de programas
- Toward a Live, Rich, Composable, and Collaborative Planetary Compute Engine: visión de un entorno de cómputo en vivo, componible y colaborativo para ciencia computacional a gran escala
- Las charlas relacionadas con Hazel están reunidas en la YouTube playlist of Hazel-related talks
- Una demo reciente puede verse en la presentación en Topos Institute
Investigación reciente y publicaciones
- En 2025, investigaciones alrededor de Hazel se presentaron en varias conferencias
- Incremental Bidirectional Typing via Order Maintenance: investigación que incrementaliza la verificación bidireccional de tipos tomando técnicas de los sistemas de layout de navegadores; recibió el OOPSLA 2025 Distinguished Paper Award
- Syntactic Completions with Material Obligations: teoría e implementación para reparar errores de sintaxis mediante obligaciones materializadas visualmente en el sistema Tylr
- A FAIR Case for a Live Computational Commons: propuesta para reorganizar el trabajo científico alrededor de entornos de programación en vivo a gran escala
- Decomposable Type Highlighting for Bidirectional Type and Cast Systems: investigación de UI para depurar errores de tipos estáticos y dinámicos en Hazel
- Hazel Deriver: A Live Editor for Constructing Rule-Based Derivations: herramienta educativa para construir derivaciones al estilo de deducción natural
- En 2024, los temas principales continuaron con recuperación de errores de tipo, integración con LLM, aprendizaje de pruebas y entornos de cómputo para ciencias del clima
- Total Type Error Localization and Recovery with Holes trata la localización y recuperación de errores en programas mal tipados, y recibió el POPL 2024 Distinguished Paper Award
- Statically Contextualizing Large Language Models with Typed Holes es un trabajo que combina servidores de lenguaje con grandes modelos de lenguaje para mejorar de forma considerable el rendimiento del completado de código con IA
- La NSF financia un proyecto de investigación para convertir Hazel en una herramienta de asistencia para pruebas en el aula
- Las investigaciones de 2017 a 2023 desarrollaron de forma progresiva los fundamentos de cómputo, la edición estructural, la evaluación en vivo y las funciones de apoyo educativo de Hazel
- Hazelnut: A Bidirectionally Typed Structure Editor Calculus define un cálculo de acciones de edición que inserta typed holes automáticamente
- Live Functional Programming with Typed Holes desarrolla una semántica operacional rica para expresiones con typed holes
- Program Sketching with Live Bidirectional Evaluation trata sobre Smyth, componente base de Hazel Assistant
- Live Pattern Matching with Typed Holes aborda el razonamiento sobre programas con holes de patrones y recibió el OOPSLA 2023 Distinguished Paper Award
Uso y contribución
- Hazel ofrece un build web para probarlo directamente
- El código fuente está disponible en GitHub
- Hazel es un proyecto de investigación open source liderado por el Future of Programming Lab (FP Lab) de la University of Michigan
- Para contribuciones o preguntas, se puede contactar al líder del equipo, Cyrus Omar
Aún no hay comentarios.