Algebraic Data Types for High-Performance Computing
Types algébriques pour le calcul haute performance
Résumé
Initially present only in functional languages such as OCaml and Haskell, Algebraic Data Types (ADTs) have now become pervasive in mainstream languages, providing nice data abstractions and an elegant way to express functions through pattern matching. Unfortunately, ADTs remain seldom used in low-level programming. One reason is that their increased convenience comes at the cost of abstracting away the exact memory layout of values. The main contribution of this thesis is the Ribbit language, which lets programmers specify highly optimized memory layouts for inductive data structures in a flexible and expressive way, while still enjoying high-level programming constructs such as ADTs and pattern matching to manipulate this data.
Les types algébriques, issus de langages fonctionnels tels qu’OCaml et Haskell, sont maintenant disponibles dans de nombreux langages de programmation. Ils permettent de modéliser diverses structures de données inductives et, en utilisant le filtrage par motif, d'écrire des fonctions complexes de façon concise et élégante. Les types algébriques restent toutefois très peu utilisés en programmation bas niveau, car ils impliquent de masquer les détails exacts de la représentation mémoire des données. Cette thèse présente le langage de programmation Ribbit, qui permet de spécifier des représentations mémoire finement optimisées pour les structures de données inductives de façon flexible et expressive, tout en conservant les avantages de constructions haut niveau telles que les types algébriques et le filtrage par motif pour manipuler ces données.
Origine | Version validée par le jury (STAR) |
---|