Com S 641 meeting -*- Outline -*- * records (2.14) ------------------------------------------ ABSTRACTION = RECORD INTRODUCTION (2.14) The abstraction principle: if pi |- U : theta then allow pi |- (define I=U) : {I:theta}dec Semantics: [[pi |- define I=U:{I:theta}dec]]e s = ({I=f}, s), where f s' = [[pi|-U:theta}]]e s' ------------------------------------------ this says you can build bindings to anything what the semantics says is that an environment is built, but an environment is also a record so this is first-class environments (Gelernter & Jaganathan) i.e., the abstraction principle is a record-introduction principle (make anything a component of a record) ------------------------------------------ DISCUSSION ON RECORDS What are the operations on records? ------------------------------------------ creation, indexing (dotting) Creation: could allow unnamed records, makes them more "first-class" indexing can be generalized to multiple indexing with expression (as in Pascal) with D do E suggests D in C = with D do C Block structure arises from making with a command