Com S 641 meeting -*- Outline -*- * design of a language core (1.9) ------------------------------------------ DESIGN OF A LANGUAGE CORE (1.9) Goals: - works well in some problem area - security - orthogonality - simple etc. Denotational method: - pick sets of meanings - design operations - give syntax to meanings and ops, using an abstract syntax - design ------------------------------------------ explain orthogonal: features that can be understood independently of each other (we'll how to do this above core in later chapters) one slogan: "consolidation, not innovation" (Hoare, 1973), applies to practice, not research (:->) ... type rules - design semantic functions - debug by calculating some meanings, trying to prove soundess theorems, etc. Q: How is this method reflected in the While0 core design? sets: Int, Bool, Location, Store ops: plus, ... syntax: 0, +, @ means lookup, etc. (key point) but stores have no rep. grouping of syntax: based on meanings (we see now) Q: Why have type attributes and typing rules? shows where a phrase's meaning lives. Then can think about control structures: e.g., if, while (given syntax) Q: Does if have to be limited to working on stores? no, *type completeness* says that operations should not be artificially limited in the types of arguments they receive.