Stage de recherche de L3 (été 2023).
Des messages d’erreur plus haut niveau pour les modules OCaml.
Équipe Cambium (centre Inria de Paris).
Stage de recherche de huit semaines au sein de l’équipe Cambium, encadré par Florian Angeletti.
De petites erreurs dans les modules OCaml peuvent facilement générer des messages d’erreur gigantesques aussi peu lisibles qu’informatifs, bien que techniquement corrects. En effet, certains modules contiennent plusieurs milliers de champs. Détecter des erreurs de frappe dans leurs noms peut considérablement améliorer les messages, en proposant des suggestions type « did you mean » au lieu d’une longue liste de champs manquants. Afin d’afficher ces suggestions en temps raisonnable, nous avons développé une manière de les calculer efficacement en utilisant une ingénieuse combinaison d’algorithmes et structures de données courants.
Durant ce stage, nous avons exploré une manière d’améliorer les messages d’erreurs liés aux modules en OCaml en détectant des erreurs de frappe efficacement, à l’aide d’une ingénieuse combinaison d’algorithmes et de structures de données. Ce travail a été implémenté dans un fork du compilateur OCaml et fera bientôt l’objet d’une pull request.
Le rapport de stage (en anglais) est disponible ici.
L3 research internship (summer 2023).
Higher-level error messages for OCaml modules.
Cambium team (Inria Paris center, France).
Eight weeks internship within the Cambium team, supervized by Florian Angeletti.
Small mistakes in OCaml modules often result in huge error messages that are both hard to read and uninformative, although technically correct. Indeed, some modules contain many thousands of items. Detecting typos in field names can greatly improve error messages by providing a few “did you mean”-like suggestions to the user instead of a long list of missing fields. In order to display those hints in reasonable time, we have explored a way to compute them efficiently using an ingenious combination of commonly known data structures and algorithms.
During this internship, we explored a way to improve OCaml module error messages by detecting spelling mistakes efficiently using an ingenious combination of algorithms and data structures. An implementation of this work in a fork of the OCaml compiler has been done, and will soon be proposed as a pull request on the main compiler branch.
The internship report is available here.