PhD in Computer Science, 2020
Master-level Engineering Degree, 2014
I am an Assistant Professor at the HKUST CSE department since February 2021. I am looking for students to join my research group! Please contact me (first-name dot last-name at gmail.com) if you’d like to work on something related to programming languages, type systems, or compiler optimization.
I obtained my PhD in 2020 at EPFL, in the Data Analysis Theory and Applications Laboratory (DATA), where I created the Squid type-safe metaprogramming library for Scala.
In English, my name would be pronounced “pah-row” – the “eau” has an “oh” sound and the “x” is silent. In French, the “r” is pronounced as a hard “r”.
MLscipt [GitHub] is an experimental programming language combining functional and object-oriented programming features while supporting ML-style global type inference. In particular, MLscript supports first-class union and intersection types (with some limitations) as well as pattern matching on classes, and can encode extensible sum and records types.
MLscript evolved from the MLstruct research language [GitHub], which itself evolved from Simple-sub [GitHub]. It will eventually incorporate more advanced type system features, including proper dependent (sub)types.
A major intended selling point of MLscript is its planned (and currently partially implemented) interoperability with TypeScript – it should be possible to mix TypeScript and MLscript code within the same code base and have them communicate almost seamlessly.
Our goal is to make high-level functional programs as runtime-efficient as possible.
This goal includes, among others:
We are in the process of designing a new technique to perform deforestation (data structure fusion) on arbitrary recursive functional programs. Lumberhack is an implementation of this technique currently being developed as an MLscript extension.
The name of the project is a play on the words “lumberjack” and “hack”, since it is a framework for deforestation
Squid [GitHub] is a type-safe metaprogramming and extensible compilation framework for Scala 2, mainly developed during my PhD at EPFL. This framework improved on the state of the art in several ways, including the ability to pattern-match on open program fragments while retaining scope safety and the ability to customize the intermediate representation of manipulated programs. Squid has influenced the development of the new metaprogramming interface of the Scala 3 compiler: https://docs.scala-lang.org/scala3/guides/macros/quotes.html
I intend to port many of these innovations to MLscript in due course.
Andong Fan, Lionel Parreaux.
super-Charging Object-Oriented Programming Through Precise Typing of Open Recursion. ECOOP 2023.
Lionel Parreaux, Chun Yin Chau. MLstruct: Principal Type Inference in a Boolean Algebra of Structural Types. OOPSLA 2022.
Aleksander Boruch-Gruszecki, Radosław Waśko, Yichen Xu, Lionel Parreaux. A case for DOT: Theoretical Foundations for Objects With Pattern Matching and GADT-style Reasoning. OOPSLA 2022.
Lionel Parreaux. The Simple Essence of Algebraic Subtyping: Principal Type Inference with Subtyping Made Easy. ICFP 2020.
Lionel Parreaux, Antoine Voizard, Amir Shaikhha, and Christoph E. Koch. Unifying Analytic and Statically-Typed Quasiquotes. POPL 2018.
Spring 2023 — COMP4901U: Modern Compiler Construction
Fall 2023 — COMP3031: Principles of Programming Languages
Spring 2022 — COMP6613E: Theory of Types and Programming Languages
Fall 2021 — COMP4901U: Computer Language Processing and Compiler Design
ECOOP Distinguished Artifact Award (for the super-charging OOP paper), 2023.
GPCE Best Paper Award (for the Quoted Staged Rewriting paper), 2017.
EPFL EDIC PhD program fellowship, 2014.
I have a (seldom updated) blog called Well-Typed Reflections.