Hazel
- Hazel est un environnement de programmation fonctionnelle live qui permet de vérifier les types, de manipuler et d’exécuter des programmes incomplets contenant des typed holes
- Il n’existe pas d’état d’éditeur dénué de sens
Motivation
- En programmant, on passe beaucoup de temps à travailler avec du texte de programme qui n’est pas formellement complet, à cause des blancs, des erreurs de type, des conflits de fusion, etc.
- Les définitions traditionnelles des langages de programmation n’attribuent pas de signification formelle à ces structures
- Les éditeurs et outils de programmation doivent s’appuyer sur des solutions temporaires complexes
- Hazel modélise les programmes incomplets sur la base de la théorie des types
Caractéristiques de Hazel
- Langage de programmation fonctionnelle similaire à Elm/ML, implémenté dans un environnement web
- Même les programmes incomplets sont bien définis statiquement et dynamiquement
- Peut être utilisé comme plateforme de recherche et d’enseignement
Actualités et publications
- Janvier 2025 : article Grove accepté sous condition à POPL 2025
- Octobre 2024 : présentation à OOPSLA 2024 d’une recherche combinant grands modèles de langage et typed holes
- Octobre 2024 : keynote prévue de Cyrus à HATRA 2024
- Septembre 2024 : subvention accordée par la NSF pour le développement d’un assistant de preuve destiné à l’enseignement
- Janvier 2024 : présentation à POPL 2024 d’un article sur la localisation et la récupération d’erreurs
- Octobre 2023 : présentation à OOPSLA 2023 d’une recherche sur le pattern matching
- Janvier 2023 : lauréat du prix NSF CAREER
Équipe Hazel
- Hazel est un projet de recherche open source mené par le Future of Programming Lab de l’Université du Michigan
- Pour les questions ou les contributions, il est possible de contacter Cyrus Omar, responsable de l’équipe
Résumé de GN⁺
- Hazel propose une nouvelle approche pour traiter les programmes incomplets et constitue une plateforme utile pour l’enseignement et la recherche en programmation
- En s’appuyant sur la théorie des types pour rendre exécutables même des programmes incomplets, Hazel contribue à explorer l’avenir de la programmation
- Parmi les projets aux fonctionnalités similaires figurent Elm, ML et divers outils d’enseignement de la programmation
1 commentaires
Avis Hacker News
L’une des caractéristiques d’Eclipse était sa capacité à exécuter du code incomplet ou cassé. C’était possible parce que le compilateur Eclipse pour Java pouvait générer du bytecode pour presque tous les fichiers. Cette fonctionnalité offrait un environnement très productif, et il est dommage qu’elle n’ait pas été reproduite dans d’autres grands systèmes.
Haskell propose des typed holes, et il existe un plugin qui fournit des actions de code pour les compléter ou scinder les cas. Agda a aussi des typed holes, avec des fonctionnalités encore plus puissantes.
Je suis prêt à répondre aux questions sur Hazel, sur lequel je travaille depuis 4 ans en tant que doctorant de Cyrus. Je développe actuellement dans Hazel une interface projectionnelle malléable pour la programmation live.
Hazel est un environnement de programmation fonctionnelle live caractérisé par les typed holes. Plus d’infos : Lien Hacker News
Tylr est une démo d’édition basée sur des tuiles, une nouvelle approche de l’édition structurelle. Plus d’infos : Lien Hacker News
J’aime bien les exemples de code de Hazel, ainsi que l’éditeur live et la documentation qui apparaît à droite. Mais je me demande s’il offre autre chose qu’un éditeur live et un vérificateur de types, et s’il est réellement possible d’écrire des programmes avec.
L’interface de l’éditeur est magnifique et fonctionne bien même sur mobile. C’est très impressionnant.
La syntaxe où le binding
letse termine parinest intéressante. Exemple :Quelqu’un sait pourquoi le mot-clé
inest utilisé ?Idris n’a pas été mentionné, mais c’est dans Idris que j’ai vu ce style de développement pour la première fois. Vidéo associée : Lien YouTube
J’ai essayé le playground sur un téléphone Android, mais les frappes clavier ne sont pas répercutées dans le code source. Je peux positionner le curseur en touchant l’écran et le clavier virtuel apparaît, mais il est impossible de saisir quoi que ce soit. Je me demande si c’est un bug ou un problème d’UX.
J’ai toujours aimé Hazel, et ce sera probablement un excellent outil pour l’enseignement. Je me demande ce qui a été construit avec Hazel.