- Hazel est un environnement web de programmation fonctionnelle live centré sur les typed holes, qui permet de vérifier les types, manipuler et exécuter même des programmes inachevés
- L’idée centrale est de modéliser les états incomplets — blancs, erreurs de type, conflits de merge — sous forme de holes, afin de réduire les zones où l’éditeur perd le sens du programme
- Les programmes incomplets que l’on peut créer dans Hazel sont définis statiquement et dynamiquement, et peuvent avoir des types incomplets ainsi que des résultats d’exécution incomplets
- La cible d’implémentation est un langage fonctionnel de la famille Elm/ML, et Hazel sert de base à des travaux sur l’enseignement de la programmation, l’édition collaborative, l’apprentissage de preuves et la complétion de code par IA
- Projet de recherche open source piloté par le Future of Programming Lab de l’University of Michigan, Hazel propose un build web d’essai et publie son code source sur GitHub
L’idée centrale de Hazel
- Hazel est un environnement de programmation fonctionnelle live construit autour des typed holes
- Même avec un programme inachevé, il reste possible de poursuivre les opérations suivantes
- Vérification de types
- Manipulation
- Exécution
- L’objectif est de créer un environnement qui conserve un retour utile même lorsque le code en cours d’édition est dans un état cassé
La manière de traiter les programmes incomplets
- Dans un processus de programmation classique, le texte du programme se retrouve souvent dans un état qui n’est pas formellement complet
- Blancs
- Erreurs de type
- Conflits de merge
- Les définitions traditionnelles des langages de programmation ne donnent pas de signification formelle à ces structures, ce qui rend difficile de traiter en retour live même le comportement des parties déjà complètes du code
- Les éditeurs et les outils finissent par s’appuyer sur des heuristiques complexes pour fournir sans interruption la complétion de code, la vérification de types et la navigation dans le code
- Hazel modélise les programmes incomplets comme des programmes avec des holes
- Un hole représente une partie manquante du programme
- Il agit comme une enveloppe autour d’une partie erronée ou d’une zone de conflit dans un environnement collaboratif
- Cette approche s’appuie sur la théorie des types modaux contextuels et sur la théorie du typage graduel
L’environnement Hazel et son modèle d’exécution
- Hazel est implémenté comme un environnement de programmation web pour un langage fonctionnel proche d’Elm/ML
- Tous les programmes incomplets qui peuvent être créés avec le langage d’actions d’édition de Hazel sont définis statiquement et dynamiquement
- Ils peuvent avoir des types incomplets
- À l’exécution, ils peuvent produire des résultats incomplets
- Grâce à cette propriété, Hazel sert de plateforme pour la recherche sur les futurs environnements de programmation et sur l’enseignement de la programmation
Vision de recherche et ressources associées
- Toward Semantic Foundations for Program Editors : vision de recherche sur les fondations sémantiques des éditeurs de programmes
- Toward a Live, Rich, Composable, and Collaborative Planetary Compute Engine : vision d’un environnement de calcul live, composable et collaboratif pour la science computationnelle à grande échelle
- Les présentations liées à Hazel sont regroupées dans la playlist YouTube de talks liés à Hazel
- Une démo récente est disponible dans la présentation au Topos Institute
Recherches récentes et publications
- En 2025, plusieurs travaux autour de Hazel ont été présentés dans des conférences
- Incremental Bidirectional Typing via Order Maintenance : une recherche qui rend progressive la vérification de types bidirectionnelle en empruntant des techniques aux systèmes de mise en page des navigateurs, récompensée par l’OOPSLA 2025 Distinguished Paper Award
- Syntactic Completions with Material Obligations : théorie et implémentation pour réparer les erreurs de syntaxe dans le système Tylr à l’aide d’obligations matérialisées visuellement
- A FAIR Case for a Live Computational Commons : proposition visant à réorganiser le travail scientifique autour d’un environnement de programmation live à grande échelle
- Decomposable Type Highlighting for Bidirectional Type and Cast Systems : recherche UI destinée au débogage des erreurs de type statiques et dynamiques dans Hazel
- Hazel Deriver: A Live Editor for Constructing Rule-Based Derivations : outil pédagogique pour construire des dérivations de style déduction naturelle
- En 2024, la récupération après erreurs de type, l’intégration avec les LLM, l’apprentissage des preuves et les environnements de calcul pour la science du climat ont été des thèmes majeurs
- Total Type Error Localization and Recovery with Holes traite de la localisation et de la récupération des erreurs dans les programmes mal typés, et a reçu le POPL 2024 Distinguished Paper Award
- Statically Contextualizing Large Language Models with Typed Holes est un travail qui combine serveur de langage et grands modèles de langage afin d’améliorer nettement les performances de la complétion de code par IA
- La NSF finance un projet de recherche visant à transformer Hazel en assistant de preuve pour la salle de classe
- Les recherches menées de 2017 à 2023 ont fait progresser par étapes les fondations de calcul de Hazel, l’édition structurée, l’évaluation live et les fonctions d’assistance pédagogique
- Hazelnut: A Bidirectionally Typed Structure Editor Calculus définit un calcul d’actions d’édition qui insère automatiquement des typed holes
- Live Functional Programming with Typed Holes développe une sémantique opérationnelle riche pour les expressions avec typed holes
- Program Sketching with Live Bidirectional Evaluation traite de Smyth, un composant de base de Hazel Assistant
- Live Pattern Matching with Typed Holes traite de l’inférence de programmes avec des pattern holes et a reçu l’OOPSLA 2023 Distinguished Paper Award
Utilisation et contribution
- Hazel propose un build web que l’on peut tester directement
- Le code source est publié sur GitHub
- Hazel est un projet de recherche open source dirigé par le Future of Programming Lab (FP Lab) de l’University of Michigan
- Pour contribuer ou poser des questions, il est possible de contacter le responsable de l’équipe, Cyrus Omar
Aucun commentaire pour le moment.