1982 · 64 citations · 4 references
ComputingComputer ScienceProgramming LanguagesSemanticsTheory Of ComputationData TypesFormal LanguagesFormal SemanticsMathematical LanguageType CheckingType SystemsDatatypes TheoryLambda CalculusLambda Calculus SemanticsPolymorphic Type SystemsPolymorphic TypesStructural TypingType InferenceType Theory
If integer constants are added to the syntax of the pure lambda calculus, then primitive integer values have to be added to the underlying domain V of values. Unlike functions, primitive values should not be applied; we want a run-time error to occur if an attempt is made to apply them as functions. Expressions that might lead to run-time errors are separated out by imposing a “type” structure on expressions. A systematic model of types is developed, in which types are formalized as “ideals” (sets with a certain structure). Polymorphic functions are handled by introducing a quantifier for taking conjunctions of types. Operations for constructing new types from old lead to the consideration of higher-order or meta types, which are called “kinds” to avoid confusion with types. Finally, the semantic model of types is applied to show the soundness of a proof system for inferring the types of expressions.
4
A theory of type polymorphism in programming
Robin Milner · Journal of Computer and System Sciences · 1978 · 2.2K citations · Full text
Principal type-schemes for functional programs
Robin Milner · 1982 · 1.1K citations
A Metalanguage for interactive proof in LCF
Mike Gordon, R. Milner, L. Morris et al. · 1978 · 127 citations · Full text