Static type systems strive to be richly expressive while still being simple enough for programmers to use. We describe an experiment that enriches Haskell's kind system with two features promotedâ€¦ (More)

Bidirectional programming languages are a practical approach to the view update problem. Programs in these languages, called lenses, define both a view and an update policy - i.e., every program canâ€¦ (More)

Erasable coercions in System F-eta, also known as retyping functions, are well-typed eta-expansions of the identity. They may change the type of terms without changing their behavior and can thus beâ€¦ (More)

We present a second-order Î»-calculus with coercion constraints that generalizes a previous extension of System F with parametric coercion abstractions by allowing multiple but simultaneous type andâ€¦ (More)

We present a second-order Î»-calculus with coercion constraints that generalizes a previous extension of System F with parametric coercion abstractions by allowing multiple but simultaneous type andâ€¦ (More)

The usual notion of type coercions that witness subtyping relations between types is generalized to a more expressive notion of typing coercions that witness subsumption relations between typings,â€¦ (More)

Erasable coercions in System FÎ·, also known as retyping functions, are well-typed Î·-expansions of the identity. They may change the type of terms without changing their behavior and can thus beâ€¦ (More)

Subtyping is a common tool in the design of type systems that finds its roots in the Î·-expansion of arrow types and the notion of type containment obtained by closing System F by Î·-expansion.â€¦ (More)