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

Main Research Projects

MLscript – type inference with first-class unions and intersections

MLscipt [GitHub] is a small research language combining functional and object-oriented programming features while supporting HM-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 is an evolution from Simple-sub [GitHub], a reformulation of the “algebraic subtyping” approach to type inference in the presence of subtyping.

SuperType – performance-oriented dependent functional language

SuperType is meant to be a functional-first programming language with an expressive dependent type system, which still gives to programmers all the tools needed to write very efficient programs.

This language is in active development, and has not been released to the public yet. It will feature new type-safe memory-management primitives as well as an advanced and extensible specializing compiler.

Lumberhack – new data structure fusion technique

We are in the process of designing a new technique to perform deforestation (data structure fusion) on functional programs. Lumberhack is an implementation of this technique for Haskell, currently being developed as a Glasgow Haskell Compiler (GHC) plugin.

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:

Selected Publications

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.

Lionel Parreaux, Amir Shaikhha, and Christoph E. Koch. Quoted Staged Rewriting: A Practical Approach to Library-Defined Optimizations. GPCE 2017.

See a list of all my publications here.


PhD Students

MPhil Students



Program Committee

External Reviewer

MPhil Thesis Defenses

  • Wai Kin WONG (Committee Member, 2021)

PhD Thesis Defenses

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

PhD Thesis Proposal Defenses

  • Leni YANG (Committee Member, 2022)
  • Da YAN (Chairperson, 2021)

PhD Qualifying Exams

  • Hengcheng ZHU (Committee Member, 2022)
  • Liwenhan XIE (Committee Member, 2021)
  • Zhibo LIU (Committee Member, 2021)
  • Chenglin WANG (Committee Member, 2021)


Spring 2022 — COMP6613E: Theory of Types and Programming Languages

Fall 2021 — COMP4901U: Computer Language Processing and Compiler Design


GPCE Best Paper Award (for the Quoted Staged Rewriting paper), 2017.

EPFL EDIC PhD program fellowship, 2014.

Presentations, Seminars, and Invitations

  • MLscript: Principal Type Inference in a Boolean Algebra of Structural Types. 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. 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.
  • 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.