2 puntos por GN⁺ 2024-11-02 | 1 comentarios | Compartir por WhatsApp

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

 
GN⁺ 2024-11-02
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.

    • Lista de funciones que añadí a Hazel: enlace de GitHub
    • Video de una charla sobre cómo usar type holes y el servidor de lenguaje de Hazel para proporcionar contexto de código a la finalización de código con LLM: enlace de YouTube
  • 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:

    let comparison =
     (0 == 0, 0 < 1, 1 <= 1, 2 > 1, 1 >= 1) 
    in
    

    ¿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.