Publication

Formalizing GADT constraint reasoning in Scala

Mario Bucev
2021
Student project
Abstract

Generalized algebraic data types (GADTs) are a powerful tool allowing to express invariants leveraging the type system. Scala 3 considerably improves the support of GADTs with respect to its predecessor Scala 2. A unique feature of Scala 3, compared to languages integrating GADTs, is the ability to define variant GADTs. While Scala 3 GADTs support is satisfactory, some use-cases could benefit from extending it further. In this work, we lay out the necessary tools to help us understand and reason about the GADT inference problem. We propose an algorithm that incrementally refines the accumulated knowledge about the type variables and prove its soundness. We also show some examples where the proposed algorithm is able to infer interesting properties that the current Scala 3 compiler misses.

About this result
This page is automatically generated and may contain information that is not correct, complete, up-to-date, or relevant to your search query. The same applies to every other page on this website. Please make sure to verify the information with EPFL's official sources.

Graph Chatbot

Chat with Graph Search

Ask any question about EPFL courses, lectures, exercises, research, news, etc. or try the example questions below.

DISCLAIMER: The Graph Chatbot is not programmed to provide explicit or categorical answers to your questions. Rather, it transforms your questions into API requests that are distributed across the various IT services officially administered by EPFL. Its purpose is solely to collect and recommend relevant references to content that you can explore to help you answer your questions.