Com S 641 meeting -*- Outline -*- * type structure parameters (3.6) ------------------------------------------ TYPE STRUCTURE PARAMETERS (3.6) var default : newint; class INTCELL = record var A: newint; proc INIT = A := 0 end; class DEFCELL = record var A: newint; proc INIT = A := @default end; class K(T:{A:int loc, INIT: comm} class) = record var S: T, proc GO = (default := 3; call S.INIT) end; var x: K(INTCELL); var y: K(DEFCELL) in x.S.A := 4; call y.GO ------------------------------------------ Q: What's the right semantics for this: eager or lazy? the eager semantics would already have allocated storage, which isn't what you want. semantics of invocation of whatever abstraction with type structure parameters [[pi |- invoke I(T): theta]] env s = p f s where f s' = [[pi |- T: delta class]] env s' and (I,p) in env The stuff in the book about not being able to do the semantics is only about what happens if you omit the type information on the type structure parameter, it's not a problem in the general scheme of this chapter (So ignore it)