Hazel
- Hazel es un entorno de programación funcional en vivo que permite verificar tipos, manipular y ejecutar programas incompletos con typed holes
- No existen estados del editor sin significado
Motivación
- Al programar, se pasa mucho tiempo trabajando con texto de programas que no está formalmente completo debido a espacios en blanco, errores de tipo, conflictos de fusión, etc.
- Las definiciones tradicionales de lenguajes de programación no otorgan un significado formal a estas estructuras
- Los editores y herramientas de programación tienen que depender de soluciones temporales complejas
- Hazel modela programas incompletos con base en teoría de tipos
Características de Hazel
- Es un lenguaje de programación funcional similar a Elm/ML, implementado en un entorno web
- Incluso los programas incompletos están bien definidos tanto estática como dinámicamente
- Puede usarse como plataforma de investigación y enseñanza
Noticias y publicaciones
- Enero de 2025: artículo de Grove aceptado condicionalmente en POPL 2025
- Octubre de 2024: presentación de una investigación en OOPSLA 2024 que combina modelos de lenguaje grandes y typed holes
- Octubre de 2024: conferencia magistral prevista de Cyrus en HATRA 2024
- Septiembre de 2024: la NSF otorgó una subvención de investigación para desarrollar una herramienta de asistencia de pruebas para clases
- Enero de 2024: presentación de un artículo sobre localización y recuperación de errores en POPL 2024
- Octubre de 2023: presentación de una investigación sobre pattern matching en OOPSLA 2023
- Enero de 2023: premio NSF CAREER
Equipo Hazel
- Hazel es un proyecto de investigación open source liderado por el Future of Programming Lab de la Universidad de Míchigan
- Si tienes preguntas o te interesa contribuir, puedes contactar a Cyrus Omar, líder del equipo
Resumen de GN⁺
- Hazel propone un nuevo enfoque para trabajar con programas incompletos y es una plataforma útil para la enseñanza y la investigación en programación
- Al basarse en teoría de tipos y permitir ejecutar incluso programas incompletos, contribuye a explorar el futuro de la programación
- Entre los proyectos con funciones similares están Elm, ML y diversas herramientas educativas de programación
1 comentarios
Comentarios en Hacker News
Una de las características de Eclipse era que podía ejecutar código incompleto o roto. Esto era posible porque el Eclipse Compiler de Java podía generar bytecode para casi cualquier archivo. Era un entorno muy productivo, y es una pena que no se haya implementado en otros sistemas grandes.
Haskell ofrece type holes, y hay un plugin que proporciona acciones de código para completarlos o dividir casos. Agda también tiene type holes y ofrece capacidades más potentes.
Estoy listo para responder preguntas sobre Hazel, y he trabajado en Hazel durante los últimos 4 años como estudiante de doctorado de Cyrus. Actualmente estoy desarrollando una interfaz proyeccional moldeable para programación en vivo en Hazel.
Hazel es un entorno de programación funcional en vivo que se caracteriza por los type holes. Más información relacionada: enlace de Hacker News
Tylr es una demo de edición basada en mosaicos, una nueva forma de edición estructural. Más información relacionada: enlace de Hacker News
Me gustan los ejemplos de código de Hazel, y también me gustan el editor en vivo y la documentación que aparece a la derecha. Pero me pregunto si ofrece algo más que un editor en vivo y un verificador de tipos, y si realmente se pueden escribir programas con él.
La UI del editor es hermosa y también funciona bien en móvil. Muy impresionante.
La sintaxis donde la vinculación de "let" termina con "in" me parece interesante. Ejemplo:
¿Alguien sabe la razón de la palabra clave "in"?
No hubo mención de Idris, pero el primer lugar donde vi este estilo de desarrollo fue en Idris. Video relacionado: enlace de YouTube
Probé el playground en un teléfono Android, pero las pulsaciones del teclado no se reflejan en el código fuente. Puedo tocar para colocar el cursor y aparece el teclado virtual, pero no puedo escribir. Me pregunto si es un bug o un problema de UX.
Siempre me ha gustado Hazel, y probablemente sería una gran herramienta para la educación. Me pregunto qué se ha construido con Hazel.