4 research outputs found
Kind Inference for the FreeST Programming Language
We present a kind inference algorithm for the FREEST programming language.
The input to the algorithm is FREEST source code with (possibly part of) kind
annotations replaced by kind variables. The algorithm infers concrete kinds for
all kind variables. We ran the algorithm on the FREEST test suite by first
replacing kind annotation on all type variables by fresh kind variables, and
concluded that the algorithm correctly infers all kinds. Non surprisingly, we
found out that programmers do not choose the most general kind in 20% of the
cases.Comment: In Proceedings PLACES 2023, arXiv:2304.0543
Modular Inference of Linear Types for Multiplicity-Annotated Arrows
Bernardy et al. [2018] proposed a linear type system as a
core type system of Linear Haskell. In the system, linearity is represented by
annotated arrow types , where denotes the multiplicity of the
argument. Thanks to this representation, existing non-linear code typechecks as
it is, and newly written linear code can be used with existing non-linear code
in many cases. However, little is known about the type inference of
. Although the Linear Haskell implementation is equipped with
type inference, its algorithm has not been formalized, and the implementation
often fails to infer principal types, especially for higher-order functions. In
this paper, based on OutsideIn(X) [Vytiniotis et al., 2011], we propose an
inference system for a rank 1 qualified-typed variant of , which
infers principal types. A technical challenge in this new setting is to deal
with ambiguous types inferred by naive qualified typing. We address this
ambiguity issue through quantifier elimination and demonstrate the
effectiveness of the approach with examples.Comment: The full version of our paper to appear in ESOP 202
Polymorphic Context-free Session Types
Context-free session types provide a typing discipline for recursive
structured communication protocols on bidirectional channels. They overcome the
restriction of regular session type systems to tail recursive protocols. This
extension enables us to implement serialisation and deserialisation of tree
structures in a fully type-safe manner.
We present the theory underlying the language FreeST 2, which features
context-free session types in an extension of System F with linear types and a
kind system to distinguish message types and channel types. The system presents
some metatheoretical challenges, which we address, contractivity in the
presence of polymorphism, a non-trivial equational theory on types, and
decidability of type equivalence. We also establish standard results on type
preservation, progress, and a characterisation of erroneous processes