Bidirectional typechecking, in which terms either synthesize a type or are checked against a known type, has become popular for its applicability to a variety of type systems, its error reporting, and its ease of implementation. Following principles from proof theory, bidirectional typing can be applied to many type constructs. The principles underlying a bidirectional approach to indexed types (generalized algebraic datatypes) are less clear. Building on proof-theoretic treatments of equality, we give a declarative specification of typing based on focalization. This approach permits declarative rules for coverage of pattern matching, as well as support for first-class existential types using a focalized subtyping judgment. We use refinemen...
AbstractA polytypic function is a function that can be instantiated on many data types to obtain dat...
We study the type inference problem for a system with type classes as in the functional programming ...
to find the "best" or "most general" type (called the principal type in the case...
Bidirectional typechecking, in which terms either synthesize a type or are checked against a known t...
Bidirectional typechecking, in which terms either synthesize a type or are checked against a known t...
Bidirectional typing is a discipline in which the typing judgment is decomposed explicitly into infe...
Bidirectional typing is a discipline in which the typing judgment is decomposed explicitly into infe...
We study the type inference problem for a system with type classes as in the functional programming ...
Modem functional languages feature polymorphic types whose data structures must be fixed, though the...
We demonstrate the pragmatic value of the principal typing property, a property more general than M...
Modern functional programming languages, such as Haskell or OCaml, use sophisticated forms of type i...
Abstract: "In prior work we introduced a pure type assignment system that encompasses a rich set of ...
Languages supporting polymorphism typically have ad-hoc restrictions on where polymorphic types may ...
A polytypic function is a function that can be instantiated on many data types to obtain data type ...
Principality of typings is the property that for each typable term, there is a typing from which all...
AbstractA polytypic function is a function that can be instantiated on many data types to obtain dat...
We study the type inference problem for a system with type classes as in the functional programming ...
to find the "best" or "most general" type (called the principal type in the case...
Bidirectional typechecking, in which terms either synthesize a type or are checked against a known t...
Bidirectional typechecking, in which terms either synthesize a type or are checked against a known t...
Bidirectional typing is a discipline in which the typing judgment is decomposed explicitly into infe...
Bidirectional typing is a discipline in which the typing judgment is decomposed explicitly into infe...
We study the type inference problem for a system with type classes as in the functional programming ...
Modem functional languages feature polymorphic types whose data structures must be fixed, though the...
We demonstrate the pragmatic value of the principal typing property, a property more general than M...
Modern functional programming languages, such as Haskell or OCaml, use sophisticated forms of type i...
Abstract: "In prior work we introduced a pure type assignment system that encompasses a rich set of ...
Languages supporting polymorphism typically have ad-hoc restrictions on where polymorphic types may ...
A polytypic function is a function that can be instantiated on many data types to obtain data type ...
Principality of typings is the property that for each typable term, there is a typing from which all...
AbstractA polytypic function is a function that can be instantiated on many data types to obtain dat...
We study the type inference problem for a system with type classes as in the functional programming ...
to find the "best" or "most general" type (called the principal type in the case...