Practice
TypeCache: TYPE = REF TypeCacheRec;
TypeCacheRec: TYPE;
Narrow: PROC [asAny: REF ANY] RETURNS [typeCache: TypeCache];
MakeProc:
TYPE =
PROC [design: Design, args:
REF
ANY]
RETURNS [cellType: CellType];
CompareProc:
TYPE =
PROC [args1, args2:
REF
ANY]
RETURNS [
BOOL];
CreateCache:
PROC [make: MakeProc, compare: CompareProc]
RETURNS [typeCache: TypeCache];
Ensure:
PROC [design: Design, typeCache: TypeCache, args:
REF
ANY]
RETURNS [cellType: CellType];