English
Related papers

Related papers: Polymorphic Type Inference for Dynamic Languages

200 papers

Bidirectional typechecking, in which terms either synthesize a type or are checked against a known type, has become popular for its scalability (unlike Damas-Milner type inference, bidirectional typing remains decidable even for very…

Programming Languages · Computer Science 2020-08-25 Jana Dunfield , Neelakantan R. Krishnaswami

System F, the polymorphic lambda calculus, features the principle of impredicativity: polymorphic types may be (explicitly) instantiated at other types, enabling many powerful idioms such as Church encoding and data abstraction.…

Programming Languages · Computer Science 2022-03-04 Henry Mercer , Cameron Ramsay , Neel Krishnaswami

We present a type checking algorithm for establishing a session-based discipline in the pi calculus of Milner, Parrow and Walker. Our session types are qualified as linear or unrestricted. Linearly typed communication channels are…

Programming Languages · Computer Science 2011-08-12 Marco Giunti

This paper proposes bimorphic recursion, which is restricted polymorphic recursion such that every recursive call in the body of a function definition has the same type. Bimorphic recursion allows us to assign two different types to a…

Logic in Computer Science · Computer Science 2011-06-08 Makoto Tatsuta , Ferruccio Damiani

We show that any multiple-valued function can be represented by a linear lambda term typed in a second-order polymorphic type system, using two distinct styles. The first is a circuit style, which mimics combinational circuits in switching…

Programming Languages · Computer Science 2026-03-30 Satoshi Matsuoka

The expression problem describes a fundamental tradeoff between two types of extensibility: extending a type with new operations, such as by pattern matching on an algebraic data type in functional programming, and extending a type with new…

Programming Languages · Computer Science 2025-11-21 Bohdan Liesnikov , David Binder , Tim Süberkrüb

A long-standing shortcoming of statically typed functional languages is that type checking does not rule out pattern-matching failures (run-time match exceptions). Refinement types distinguish different values of datatypes; if a program…

Programming Languages · Computer Science 2020-09-22 Khurram A. Jafery , Jana Dunfield

This paper investigates type isomorphism in a lambda-calculus with intersection and union types. It is known that in lambda-calculus, the isomorphism between two types is realised by a pair of terms inverse one each other. Notably,…

Logic in Computer Science · Computer Science 2015-08-12 Mario Coppo , Mariangiola Dezani-Ciancaglini , Ines Margaria , Maddalena Zacchi

Infinite types and formulas are known to have really curious and unsound behaviors. For instance, they allow to type {\Omega}, the auto- autoapplication and they thus do not ensure any form of normalization/productivity. Moreover, in most…

Programming Languages · Computer Science 2018-01-23 Pierre Vial

Intersection types have been originally developed as an extension of simple types, but they can also be used for refining simple types. In this survey we concentrate on the latter option; more precisely, on the use of intersection types for…

Logic in Computer Science · Computer Science 2019-04-24 Paweł Parys

We show how security type systems from the literature of language-based noninterference can be represented more directly as predicates defined by structural recursion on the programs. In this context, we show how our uniform syntactic…

Cryptography and Security · Computer Science 2013-08-16 Andrei Popescu

This work introduces the novel concept of kind refinement, which we develop in the context of an explicitly polymorphic ML-like language with type-level computation. Just as type refinements embed rich specifications by means of…

Programming Languages · Computer Science 2019-08-02 Luís Caires , Bernardo Toninho

The importance of subtyping to enable a wider range of well-typed programs is undeniable. However, the interaction between subtyping, recursion, and polymorphism is not completely understood yet. In this work, we explore subtyping in a…

Programming Languages · Computer Science 2021-03-30 Ankush Das , Henry DeYoung , Andreia Mordido , Frank Pfenning

We present a rich type system with subtyping for an extension of System F. Our type constructors include sum and product types, universal and existential quantifiers, inductive and coinductive types. The latter two size annotations allowing…

Logic in Computer Science · Computer Science 2017-07-12 Rodolphe Lepigre , Christophe Raffalli

Types-and-effects are type systems, which allow one to express general semantic properties and to statically reason about program's execution. They have been widely exploited to specify static analyses, for example to track computational…

Logic in Computer Science · Computer Science 2011-08-12 Letterio Galletta , Giorgio Levi

Intersection types are an essential tool in the analysis of operational and denotational properties of lambda-terms and functional programs. Among them, non-idempotent intersection types provide precise quantitative information about the…

Logic in Computer Science · Computer Science 2019-11-06 Thomas Ehrhard

We study an assignment system of intersection types for a lambda-calculus with records and a record-merge operator, where types are preserved both under subject reduction and expansion. The calculus is expressive enough to naturally…

Programming Languages · Computer Science 2015-03-18 Jan Bessai , Boris Düdder , Andrej Dudenhefner , Tzu-Chun Chen , Ugo de'Liguoro

Subtyping, also known as subtype polymorphism, is a concept extensively studied in programming language theory, delineating the substitutability relation among datatypes. This property ensures that programs designed for supertype objects…

Artificial Intelligence · Computer Science 2025-02-14 Đorđe Marković , Marc Denecker

Many automatic theorem provers are restricted to untyped logics, and existing translations from typed logics are bulky or unsound. Recent research proposes monotonicity as a means to remove some clutter when translating monomorphic to…

Logic in Computer Science · Computer Science 2019-03-14 Jasmin Christian Blanchette , Sascha Böhme , Andrei Popescu , Nicholas Smallbone

Session types, types for structuring communication between endpoints in distributed systems, are recently being integrated into mainstream programming languages. In practice, a very important notion for dealing with such types is that of…

Programming Languages · Computer Science 2023-06-22 Mario Bravetti , Marco Carbone , Julien Lange , Nobuko Yoshida , Gianluigi Zavattaro