Polymorphic Type Inference for Dynamic Languages
Giuseppe Castagna, Mickaël Laurent, Kim Nguyễn
Abstract
We present a type system that combines, in a controlled way, first-order polymorphism with intersection types, union types, and subtyping, and prove its safety. We then define a type reconstruction algorithm that is sound and terminating. This yields a system in which unannotated functions are given polymorphic types (thanks to Hindley-Milner) that can express the overloaded behavior of the functions they type (thanks to the intersection introduction rule) and that are deduced by applying advanced techniques of type narrowing (thanks to the union elimination rule). This makes the system a prime candidate to type dynamic languages.
Topics & Concepts
SubtypingType inferenceIntersection (aeronautics)Programming languageType (biology)Computer scienceInferenceTheoretical computer scienceAlgorithmArtificial intelligenceEngineeringBiologyAerospace engineeringEcologyLogic, programming, and type systemsAdvanced Database Systems and Queriessemigroups and automata theory