• PhD in Computer Science, 2020

    EPFL, Lausanne

  • Master-level Engineering Degree, 2014

    INSA Lyon

  • Programming Language Design
  • Advanced Type Systems
  • Functional Programming
  • Compiler Optimization
  • Type-Safe Metaprogramming

About Me

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 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”.

Main Research Projects

MLscript – functional and object-oriented programming language with a sound structural type system, powerful type inference, and TypeScript interop

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.

Efficient compilation of functional programs

Our goal is to make high-level functional programs as runtime-efficient as possible.

This goal includes, among others:

  • designing new type-safe memory-management techniques and primitives, allowing for a better usage of resources in high-level languages;
  • creating a WebAssembly backend for MLscript with optimizations to remove the overhead associated with the traditional execution strategies of dynamic features; which will be facilitated by
  • giving programmers all the tools they need to optimize for performance without compromising on abstraction, modularity, and maintainability by combining specialization, defunctionalization, and compile-time metaprogramming.
Lumberhack – new data structure fusion technique

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 – type-safe metaprogramming for Scala

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:

I intend to port many of these innovations to MLscript in due course.

Selected Publications

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.


PhD Students

MPhil Students



Program Committee

External Reviewer

MPhil Thesis Defenses

  • Chun Yin CHAU (Supervisor, 2023)
  • Qi PANG (Committee Member, 2022)
  • Wai Kin WONG (Committee Member, 2021)

PhD Thesis Defenses

  • Guillaume Martres, EPFL (External Committee Member, 2022)
  • Da YAN (Committee Member, 2022)


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.

Presentations, Seminars, and Invitations

  • When Subtyping Constraints Liberate: A Novel Approach to First-Class-Polymorphic Type Inference. Invited seminar talk, Huawei Compilers and Programming Languages Workshop (Huawei Research Hong Kong), July 2023.
  • MLstruct: Principal Type Inference in a Boolean Algebra of Structural Types. Conference talk, OOPSLA, December 2022.
  • The Ultimate Conditional Syntax. Workshop talk, ML Family Workshop, September 2022.
  • MLscript: Principal Type Inference in a Boolean Algebra of Structural Types. Invited seminar talk, JetBrains Research (Programming Languages and Tools Lab), May 2022.
  • Principal Type Inference for Structural Typing in a Boolean Algebra of Types. Distinguished Speaker talk, Code Generation Knowledge Forum at MathWorks, January 2022.
  • Designing Efficient Systems with Multi-Stage Programming & Other Type-Safe Metaprogramming Techniques. Invited seminar talk, JetBrains Research (Programming Languages and Tools Lab), December 2021.
  • Principal Type Inference for Object-Oriented Programming in a Boolean Algebra of Types. Departmental Seminar talk, HKUST, November 2021.
  • Comprehending Monoids with Class. Workshop talk, DBPL, August 2021.
  • Multi-stage Programming in the Large with Staged Classes. Conference talk, GPCE, November 2020.
  • The Simple Essence of Algebraic Subtyping: Principal Type Inference with Subtyping Made Easy. Conference talk, ICFP, August 2020.
  • Towards improved GADT reasoning in Scala. Conference talk, SCALA, July 2019.
  • Fearless Metaprogramming with Squid. Invited talk, DIMA lab, TU Berlin, June 2018.
  • Fearless Metaprogramming with Squid. Invited talk, Amazon Berlin, June 2018.
  • Comprehending Monoids with Class. Extended Abstract talk, Type-Driven Development, St. Louis, September 2018.
  • Unifying analytic and statically-typed quasiquotes. Conference talk, POPL, January 2018.
  • Unifying analytic and statically-typed quasiquotes. Invited talk, EPFL LAMP, December 2017.
  • Quoted Staged Rewriting: a Practical Approach to Library-Defined Optimizations. Conference talk, GPCE, October 2017.
  • Squid: Type-Safe, Hygienic, and Reusable Quasiquotes. Conference talk, SCALA, October 2017.
  • Quoted Staged Rewriting: a Practical Approach to Library-Defined Optimizations. Invited talk, EPFL LAMP, September 2017.
  • Google Compiler and Programming Language Summit, Munich, 2017, 2018, 2019.
  • Google PhD Student Summit on Compiler & Programming Technology, Munich, 2016.


I have a (seldom updated) blog called Well-Typed Reflections.