102 citations · 202 across the 10 of their papers we have counts for
11 papers
Polymorphic Records for Dynamic Languages
Giuseppe Castagna, Loïc Peyrot
We define and study "row polymorphism" for a type system with set-theoretic types, specifically union, intersection, and negation types. We consider record types that embed row var…
Polymorphic Type Inference for Dynamic Languages
Giuseppe Castagna, Mickaël Laurent, Kim Nguyen
We present a type system that combines, in a controlled way, first-order polymorphism with intersectiontypes, union types, and subtyping, and prove its safety. We then define a typ…
The Design Principles of the Elixir Type System
Giuseppe Castagna, Guillaume Duboc, José Valim
Elixir is a dynamically-typed functional language running on the Erlang Virtual Machine, designed for building scalable and maintainable applications. Its characteristics have earn…
Programming with union, intersection, and negation types
Giuseppe Castagna
In this essay, I present the advantages and, I dare say, the beauty of programming in a language with set-theoretic types, that is, types that include union, intersection, and nega…
Revisiting Occurrence Typing
Giuseppe Castagna, Victor Lanvin, Mickaël Laurent +1
We revisit occurrence typing, a technique to refine the type of variables occurring in type-cases and, thus, capturesome programming patterns used in untyped languages. Although oc…
Semantic subtyping for non-strict languages
Tommaso Petrucciani, Giuseppe Castagna, Davide Ancona +1
Semantic subtyping is an approach to define subtyping relations for type systems featuring union and intersection type connectives. It has been studied only for strict languages, a…