Com S 641 meeting -*- Outline -*- * overview of semantics (Schmidt's: The structure of typed Prog Langs) ** introduction (preface) ------------------------------------------ STRUCTURE OF TYPED PROG LANGS Goals: - structuring techniques - design principles - role of type theory CONNECTION OF LANGUAGE AND LOGIC (CURRY-HOWARD ISOMORPHISM) language logic type system ~ propositions programs Examples: ------------------------------------------ the role of type theory is central (recently) What phrases can be named in a program? FORTRAN: numbers, arrays Algol, LISP: expressions Scheme, ML: functions ... Curry-Howard: the propositions assert that values exist. ... proofs (that values exist) examples: all a. a -> a is a tautology, so has proof \ x -> x all a,b . a -> b -> a ? all a . Int -> a ? ** outline ------------------------------------------ OUTLINE 1: core language (data, ops, control) tools: abstract syntax, type checking laws (rules) denotational semantics 2. Abstraction principle (naming, declarations) explains: procedures, functions, consts, modules, classes evaluation strategies how variable decls affect language. 3. Parameterization principle explains: parameter transmission Correspondence principle (how should declarations relate to parameters) 4. Qualification principle (encapsulation) explains: scope, extent, encapsulation, objects, subtyping, inheritance 5. Records and lambda abstraction explains previous principles as record and function constructions higher-order features lazy vs. eager evaluation Orthogonality principle 6. Lambda calculus ------------------------------------------