Inter-OfficeMemorandumToCedarInterestDateOctober12,1982FromPaulRovnerLocationPaloAltoSubjectTheCedarRuntimeTypeSystemOrganizationPARC/CSLXEROXFiledon:[Indigo]Documentation>RTTypes.tiogaINTRODUCTIONTheCedarruntimetypesystemprovidesproceduresforexaminingarbitraryCedarvaluesandTYPEsatruntimeandforcreatingnewvaluesandmodifyingvariables.Usingitsinterfaces,onecanwriteaprogramthatdealswithanygivenCedarvalueorTYPEwithoutanticipatingthespecificTYPEwhentheprogramiswritten.Thenaturalclientforsuchfeaturesinaprogrammingsystemthatemploystypecheckingatcompiletimeisthedebugger.TheprimarymotivationforthecurrentimplementationwastoprovideafoundationfortheCedardebugger,basedontheconceptsoftheCedarAbstractMachineforinterpretingvaluesandtypes.ThekeyconceptsoftheCedarAbstractMachineforthepurposeofthismemoarethatatypecarrieswithitasetofoperationsandthatavariablecarrieswithititstype.Foramorecompletetreatmentoftheseandrelatedissues,see,on[Ivy],CedarAM.press,SAM.pressandRTT>AMFundamentals.press.Thecurrentimplementationistooslowtobeusedeffectivelybyclientprogramsasasubstitutefortruepolymorphisminthelanguage,butissuitableforexaminingandchangingvariablesinteractivelywiththeCedardebugger.Itisourintentiontoimprovetheimplementation(butretainthespiritofitsdefinition)whenthelanguageispreparedtodealadequatelywithpolymorphism.Weexpectthatitwillthenbemorenaturalforrun-of-the-millCedarprogramstomakeuseoftheseorsimilarfacilities.TheimplementationoftheruntimetypesystemisincludedintheCedarbootfiles.TheinterfacesreferencedinthismemoareRTBasic,RTTBridge,RTTRemoteBridge,RTTypesandRTSymbols.TheseareexportedbyRTT.bcd,whichisacomponentofCedarCore.bcd.Allfilesthatconstitutetheruntimetypesystemareaccessiblevia[Indigo]Top>Runtime.df.1.0ConceptsandPerspectiveCedarisastrongly-typedlanguage.Everyvariable(includingonesthatareimmutableaftercompile-time)hasanassociatedbundleofinformationthatcanbeusedtodeterminethemeaningofthebitsofitsvalue.IntheCedarAbstractMachineformulation,thisbundleiscalledaType.EachTypecorrespondstoaCedarTYPE,andisrepresentedatruntimeasaninstanceofRTBasic.Type(formoredetailabouttheCedarruntimesystemsee[Indigo]Documentation>Runtime.tioga).FortheCedartypesystem,itisconvenienttocategorizeTypesbywhatwecalltheirClass.Forexample,thisisusefulfordecidinghowtodisplayavalueofagivenType.1pî ®ïaï î­ qî ®ï_trînï_tî†qî#ïï_trî+¯ï_tî0ýî3:qî ®ï\ùrînï\ùî“qî#ïï\ùrî+¯ï\ùî.Éqî ®ïZ~rînïZ~îFî^î!î$£qî+¯ïZ~ rî3oïZ~sî{ïRîrî ®ïI îLîÌð*î ®ïD îoïA›îMîlî©î¿î#@î(Ö î/ãî2&î8Úî>…îB£îFØîoï?óî@îøîNî%î ‚î%Øî(åî-3î0 î6À î<òîAîC îoï>Lî(îÀîKî�îî!øî%ƒî(«î+Xî/î3?î6öî8Æî=îB îoï<¥îÏî¹îæî›î úî&‰î'õîoï:*îfî8îîtî Åî&î'Ýî)& î1Øî6rî9`î>ìîBîGöîoï8‚îºîôîsîçî"\î%Hî*’ î1‹î3Ýî6Pî;. îE!îGàîoï6Ûî£îö î&î�î"î&Wî,áî0ìî3î5¤î;iî=Kî?ÔîDîoï54î î] îÝî# î%Âîoï2¹îFîÛîuî-î‹î"¢î(î-Ëî0î2eî7§î9_î;ÿî@7îB‰îEVîFîoï1î´î¹îùî îî¸ î#Pî%òî(ªî)¾î.ßî3$î6)î7iî9.î<€î?î@)îC§îoï/jî¿î‘î4î"î'±î-î0Éî3éî8‹îoï-ÃîËîƒð!îoï+Hî<îú î Íî"-î$Œî'¥î)Hî+-î.^ î4êî6Ûî:�î@—îB:îCX îoï) îÉîÉ îîÓî"Oî(Šî+(î,°î1ãî4=î;î=ÛîCÔîoï'ù îAîkîÚî!î'sî(úî*uî-î2üî4ºî:7î<¦ îF”îoï&Rî§îSî'î,îS î%cî)dî,î2!î3Ùî9÷î;òî?7 îFtîoï$ª îæîlî¹î"„î#Öî&~î) î+�î/î3Ìî6î?gîC|îoï#îîÒîGîî‰îMî"Ò îoï ˆî# îÝîrî­î$Àî'«î,î-Iî2Ëî4Uî6�î:„î=�î@±îCe îoïà îßî9î†î!jî$iî*ð î3<î@/îFØîoï9 î;î2îzî#+î%î+Eî/Hî0¨î1Çî8äî:’ îDYîF¡îoï’î= îîÞî î#%î' î)ô î04î2qî ®ïîêîèî  îoïœî´îMî£ îÝî&(î*Kî/® î6iî9Åî<Àî?AîFSîoïô îî9în î$ î) î+ î2Úî5îî8¾î:ôî>uî@hîG/îoïMî.î î‘îXî6î 5î$\î&Pî(Õî-î2±î8‡ î@�îCVîH#îoï¦îgtî’ï¦îyï¦rîï¦îôï¦tîhï¦îOï¦rî rï¦î! ï¦ î(î)Ãî*îî/î3�î6Fî7² î?î@·îEïîGžîoïþî™uî/ïþîïþtîNïþî4ïþrî"3ïþî"¬ïþî%Æî*6î.Þî3�î6Ùî;ÎîAâîG:îoïWð,îoï Üî+î›îÄîäî Èî"/î#« î*·î,v î2óî7î9î<Šî>ÂîA]tîDµï ÜîEÈï ÜrîH³ï Üîoï 5îîìî�îùî î"Nî'Þî*âî,‘î1Cî2mî6î7Ðî8úî<®vî)Èïöÿ TVm$ÜEveryCedarvariablethatcanaffecttheoutcomeofacomputationcanbeviewedasacomponentoftheCedarAbstractMachine.WecalladescriptionofsuchaCedarvariableaTypedVariable.WeusethetermStatusforthemutabilitypropertyofTypedVariables.ATypedVariabledescribes:theTypeofitsvaluewhetherthevalueisaconstant(i.e.immutableaftercompile-time)ifso,theactualbitsofthevalue(statusconst)ifnot,theaddressesofthememorycellsthatcontainthebitsofthevalueandwhetherthevariablemaybechanged(statusreadOnlyormutable)Notethatframes(bothlocalandglobal)areviewedasTypedVariablesintheCedarAbstractMachine.Asyouwillseebelow,theimplementationprovidesproceduresfordealingwithframesandcontrollinks.Aclientoftheruntimetypesystemapproachesitviathe"Bridge"interfaces(RTTBridgeandRTTRemoteBridge)fromeitheralocalorremoteCedarworldwithoneofthefollowing:aREFaLONGPOINTERandaRTBasic.TypeanATOMaROPEaPrincOps.FrameHandleaPrincOps.GlobalFrameHandleaPROCANYRETURNSANYanERRORANYRETURNSANYForREFs,LONGPOINTERs,FrameHandlesandGlobalFrameHandles,proceduresexistforcreatingTypedVariablesthatdescribethereferents.ForATOMs,ROPEs,PROCsandERRORs,proceduresexistforcreatingTypedVariablesthathavethespecifiedvalues.ProceduresoftheRTTypesinterfaceallowonetoexamineandmodifycomponentsofTypedVariablesandexaminethestructureofCedar/MesaTYPEs.Generally,theRTTypesproceduresareuniformlyapplicablebothtoTV'sforelementsofthelocalworldandTV'sforelementsofaremoteworld.Theonlyexceptiontothisinthecurrentimplementationistherestrictionthatassignment(viaRTTypes.Assign)ofaREF-containingvaluetoaTVinaremoteworldisnotallowed.2.0TheClassesofTypesType:TYPE=RTBasic.Type;RTTypes.Class:TYPE={definition,--e.g.TypeClass[CODE[T]]whereT:TYPE=...--cardinal,longCardinal,integer,longInteger,real,character,--basicatom,rope,list,ref,pointer,longPointer,descriptor,longDescriptor,basePointer,relativePointer--address--procedure,signal,error,program,port,--transfer--enumerated,subrange,union,sequence,record,structure,array,2rîoïb)îAî5îGîñî!Xî$ÿî';î,±î.Fî/K î7!î9ˆî;Uî?ØîAaîBgîoï`‚îÅîÁîuîŒî&0î)Wî,î.E î5ôî8Iî<î=ÝîB’îHetîoï^Ú rîèï^ÚîÓï^Úîlîðî"_tî%´ï^Úî&±ï^Úrî*õï^Úî+nï^Úî-Aî/¯ î6Wî<î=ÈîHîoï]3 î¾ î1ïZ¬î�îîÒî¬î1ïX$îîÞîˆîóî î%Œî(Aî/'î2c îòïU�îëîJîMî ïî"¨î%î(±tî-ïU�î-ÝïU�rî0ÿïU�îòïSî“îéî óî"£î$ùî*]î-cî0(î4þî7Tî9íî;œî=òîA“îDAîòïQnîRîˆîŒî!}î&ìtî+<ïQnî+áïQnrî2QïQnî3 ïQntî4ïQnî5_ïQnrî9öïQnîoïNçî÷î×îcî*î!‚î$Kî(ùî+^î0î1Ö î;»î=zî?ëîDîoïM?îYîKîãîpî¤î"ëî%, î.ìî4\ î;Dî=cîBîEîoïK˜î&îÙîoïIîîËîŒîóî1î!Iî%Ì î,ûî.Yî0žî3î8Ý î? îFØîoïGiîØî?î#+î$Uî'›î)_î.î2î6 î9%î;Ñî=Šî?é î1ïDâvîZïDâîXïDârî1ïBZvîZïBZî,ïBZîÕrîwïBZîïBZî!/wî"XïBZî##ïBZvî&öïBZî'ÓïBZî1ï?ÓîMrî1ï=LvîZï=LîXï=Lî1ï:Äî{î1ï8=î{rî1ï5µvîZï5µîBï5µîÕî<î"aî1ï3.îMîÄî+î$Prîoï0¦vî)ï0¦î&ï0¦rîßï0¦îcï0¦vîNï0¦îï0¦î×rî ôï0¦î!xï0¦vî"cï0¦î#5ï0¦ rî*ôï0¦î, ï0¦vî.Ðï0¦î/äï0¦rî;�ï0¦î<ï0¦î<þ îDîGRîoï.ÿî‡ î<î ëî&/î(p î.Xvî0åï.ÿî1×ï.ÿî6kî;Ãrî?¹ï.ÿî@£ï.ÿvîC;ï.ÿîD"ï.ÿrîH.ï.ÿîH²ï.ÿîoï-X î†îÇîî![ î+?î.î1tî3ãî9¯î>E îEfîG/îoï+°îEîÃîDî Èî"Oî' î*/î.Å î6Jî7Û îA‡îDîoï* îÏîŒîE î!2îoï'‚ î0î™îŸ î%¯î( î.€ î5î8\î:î=cî?©îEmîG/îoï%Úî³î�îRî–îÑî$Šî&Aî'iî,î0Oî3%î6=îî@¼îBhîDÅîoï$3 î{îî  î$Dî'@ î.~î1bî.î?„ îoï"ŒîîÇîñîZîî2îÙî#Åî%1î'¦î ®ï îêîÂîî8tîoï}îñî9uîï}îðï}tî;ï}î "ï}uîoïõtîÔïõîçïõîÏîîóïHîûïš xîOïšîÈïšîÆîFî*sî.Vî0;î4î6drtî€ïíî\ïíî_ î"€î(™ î1Êî5‘ rî=™ïíî>ïítî€ï?î\ï?î îNî†î “î&¶ î/ü î8rrtî‰ï’î…ï’ îHrî&ùï’î'rï’ tî€ïäîgïäîëî3î#Öî*árî.Õïäî/Nïä tî€ï7î\ï7 îytîüï ‰îãï ‰î÷îûï Üî¼ îûï .vî)ÈïöŽTVm$écountedZone,uncountedZone,nil,--e.g.TypeClass[TVType[NIL]]unspecified,process,type,opaque,any,--e.g.TypeClass[Range[CODE[REFANY]]]globalFrame,localFrame--frame--};3.0MutabilitystatusofTypedVariablesRTTypes.Status:TYPE={mutable,readOnly,const};4.0The"Bridge"interfaces:ConversionbetweenCedarvaluesandTypedVariables4.1TypesandconstantsdefinedinRTTRemoteBridgeWorld:TYPE=WorldVM.World;RemoteRef:TYPE=RECORD[world:World_,worldIncarnation:LONGCARDINAL,ref:WorldVM.Address];nilRemoteRef:RemoteRef=[world:NIL,ref:0,worldIncarnation:0];RemotePointer:TYPE=RECORD[world:World_,worldIncarnation:LONGCARDINAL,ptr:WorldVM.Address];nilRemotePointer:RemotePointer=[world:NIL,ptr:0,worldIncarnation:0];RemoteFrameHandle:TYPE=RECORD[world:World_,worldIncarnation:LONGCARDINAL,fh:WorldVM.ShortAddress];nilRemoteFrameHandle:RemoteFrameHandle=[world:NIL,fh:0,worldIncarnation:0];RemoteGlobalFrameHandle:TYPE=RECORD[world:World_,worldIncarnation:LONGCARDINAL,gfh:WorldVM.ShortAddress];nilRemoteGlobalFrameHandle:RemoteGlobalFrameHandle=[world:NIL,gfh:0,worldIncarnation:0];RemotePD:TYPE=RECORD[world:World_,worldIncarnation:LONGCARDINAL,pd:UNSPECIFIED];nilRemotePD:RemotePD=[world:NIL,pd:0,worldIncarnation:0];RemoteSED:TYPE=RECORD[world:World_,worldIncarnation:LONGCARDINAL,sed:UNSPECIFIED];nilRemoteSED:RemoteSED=[world:NIL,sed:0,worldIncarnation:0];4.2HowtoacquireaTypedVariablefromaCedarvalue3tîûïb> î_ îûï`�rîÂï`�î;ï`�î9îÂtî€ï^Ýîgï^Ý îûï],îûï[|îûïYÌîûïXxîïXî”ïXî‘îî+nrtî€ïVkî\ïVk îv rî$zïVkî$óïVktîóïT»rî ®ïR.îê î¯î†î? uîoïO¡tîÔïO¡îÑïO¡îîÇî «î(8î/Çrî ®ïMîêîÂî“ î6 î%~î*ìî/î32î5ê îoïJ†î¬î¸îpîcî#cî%yî1ïGùrîåïGùqîâïGùî›ïGùrî9ïGùîïGù yî1ïElrîÓïElqîÐïElî‰ïElrî'ïElqî ïElîàïElrî#>ïC¼î(î,Uî-âî#ÃïB qî.÷ïB î/°ïB î2Írî9ïB î#Ãï@[î&cîµï>« îî#cî%Hqî*ï>«î*øï>«rî,ï>«î,øï>«î/™î1%îï:nî(î,Uî-âî#Ãï8½qî.÷ï8½î/°ï8½î2Írî9ï8½î#Ãï7 î&zîµï5\î6 î'±î)–qî._ï5\î/Gï5\rî0jï5\î1Gï5\î3þî5‹î@Àyî1ï2ÏrîÚï2Ïqî×ï2Ïî �ï2Ïrî#.ï2Ïqî%ï2Ïî%çï2Ïrî#>ï1î(î,Uî-âî#Ãï/oqî.÷ï/oî/°ï/oî2Írî9ï/oî#Ãï-¾î&îµï,î"#î!-ï*^î#qî'Úï*^î(Ãï*^rî)æï*^î*Âï*^î-î.�î9Âyî1ï'Ñrî"Ðï'Ñqî#Íï'Ñî$†ï'Ñrî'$ï'Ñqî) ï'Ñî)Ýï'Ñrî#>ï& î(î,Uî-âî#Ãï$pqî.÷ï$pî/°ï$pî2Írî9ï$pî#Ãï"¿î&±îµï!î&;î!-ï_î#qî'Úï_î(Ãï_rî)æï_î*Âï_î-±î/>î:ryî1ïÒrî¼ïÒqîºïÒîsïÒrîïÒqîöïÒîÊïÒrî#>ï!î(î,Uî-âî#Ãïqqî.÷ïqî/°ïqî2Írî9ïqî#ÃïÁqî&NïÁî'4ïÁ rî.ïÁî.vïÁîµï îØî"õî$Úqî)¢ïî*Šïrî+­ïî,Šïî/î0¢î;×yî1ïƒrî™ïƒqî–ïƒîPïƒrîîïƒqîÓïƒî §ïƒrî#>ïÓî(î,Uî-âî#Ãï"qî.÷ï"î/°ï"î2Írî9ï"î#Ãïrqî&±ïrî'–ïr rî.uïrî.Ùïrîµï  îµî$®î&“qî+[ï Âî,Dï Ârî-gï Âî.Cï Âî12î2¿î=óîoï 5î¬î î·î—îÀ î&î)vî* î.¸vî)Èï`TVm$ (a)FromalocalCedarREF(RTTBridge)TVForReferent:PROC[ref:REFANY,status:Status_mutable]RETURNS[TypedVariable];ThisyieldsaTypedVariablethatrepresentstheCedarvaluethatisthereferentofref.TVForReadOnlyReferent:PROC[ref:REFREADONLYANY]RETURNS[TypedVariable];ThisyieldsaTypedVariable,statusreadOnly,thatrepresentstheCedarvaluethatisthereferentofref.(b)FromaremoteCedarREF(RTTRemoteBridge)TVForRemoteReferent:PROC[remoteRef:RTTRemoteBridge.RemoteRef,status:Status_mutable]RETURNS[TypedVariable];ThisyieldsaTypedVariablethatrepresentstheCedarvaluethatisthereferentofref.(c)FromotherlocalCedarvalues(RTTBridge)TVForATOM:PROC[atom:ATOM]RETURNS[TypedVariable--atom--];TVForROPE:PROC[rope:Rope.ROPE]RETURNS[TypedVariable--rope--];--useTVToNametogettheROPEbackTVForProc:PROC[proc:PROCANYRETURNSANY]RETURNS[TypedVariable--procedure--];TVForSignal:PROC[signal:ERRORANYRETURNSANY]RETURNS[TypedVariable--signal,error--];TheseyieldTypedVariablesthatdescribetheindicatedprocedureorsignaldescriptor.TheClassofsuchaTypedVariableiseitherprocedure,signal,orerror.(NOTE:TheoperationsbelowandtheTypedVariablestheyproduceareunsafe)TVForPointerReferent:PROC[ptr:LONGPOINTER,type:Type,status:Status_mutable]RETURNS[TypedVariable];ThisyieldsaTypedVariablethatrepresentsthereferentofthespecifiedpointer.ThespecifiedTypeisacceptedasthevariable'sType.TVForFHReferent:PROC[fh:PrincOps.FrameHandle,evalStack:WordSequence_NIL]RETURNS[TypedVariable];ThisyieldsaTypedVariablethatrepresentstheindicatedlocalframe.ThestructureofnestedblocksandtheirlocalvariableswillbedeterminedfromthePCthatisstoredintheframe.BEWARE.ThisisUNSAFE.ReferencetothisTypedVariableafterthespecifiedframeisnolongervalidwillleadtomanifestationsofstrangeandwondrousphenomena(RTTypesfunctionsthatdealwithframevaluesvalidatethemwhereverpossible,butaccidentscanstillhappen.)TVForGFHReferent:PROC[gfh:PrincOps.GlobalFrameHandle]4rî1ïb!îMî"îLî’î ªî$ tîòï_› î î([î+¦î/Åî5Dî:vî<îï]îrî´ï[iîÃî£îÁ î)î+È î2?î4“î8Ÿî<>î?î@aîBµîGÖtî´ïYÂrîÃïYÂtîòïW<î'tî/Oî2šî;-îïU�rî´ïS îïîüî G î*tî.ïS î.­ïS rî4šïS î5˜ïS î8‡ î?+îA¬îEåî´ïQbî‚îîîMî#ytî%2ïQbî%×ïQbrî'BïQbî1ïNÝîoîDîmîî"-î%‰tîòïLWî%óuî3BïLWî4ïLWtî> ïLWî?ïLWî'ïJ«î,þî20î3¼îïHþrî´ïFxîÃî£îÁ î)î+È î2?î4“î8Ÿî<>î?î@aîBµîGÖtî´ïDÑrîÃïDÑî1ïBLîCîî·îýî#î'C tîòï?Æ î� î'ìîï>îòï;” î6 î'E îï9çrxîï8:î–ï8:î”îôî%jî'î)Oî+›î0 tîòï5µ î” î&£î+\î/î6mîï4ð$îòï1ƒ î± î(Èî.Zî2î9kîï/Öî1qrî´ï-Qî%îû î*=î-{î3Mî6î<îCqîE¤î´ï+© î§î!¯î%qî'Yî*ºî, î5‘î7,vî;Hï+©î<ï+©rîAéï+©vîBõï+©îC¥ï+©rîF¿ï+©îGËï+©vî´ï*rîØï*îòï'|înîF î#ôî(î*¸î- î6ëî9ûî?TîA¨tîòï$÷î~ï#Jîdî"üî*\î.†î3î8ˆî=ºî?Eîï!�rî´ïîÛîÓî î)eî,@ î2Ïî5;î:tî<:î>¦îDnî´ïqîŒî Hî#Ðî%<î*ãî,‘î.ñ î5tîòïëî"nuî)¯ïëî*zïëtî/cïëî0Jïë î$hï> î,z î7ñî9}îï’rî´ï î¬îwî î(¬î+Y î1ºî3øî9Êî<ïîAîCÒî´ïeîsîÉî"î$Ñî(î+jî1+î3Üî5Ó î="î@�îBõîEOîH#î´ï¾î¿îUîœî#Òî*¾î-Àî/î5¶î< î=·î@@ î´ïîûîgî#.î'1î(¨î*»î/ î2}î54î8:î9ô îC îDÑî´ïoîKî €î'Õî.+î4 î6·î9�î<Šî@`îDnî´ï Èî=î!/î&Éî)Jî/3î1¾î4_tîòï Bî#�uî+žï Bî,hï Btî1Rï Bî2dï Bvî)ÈïöATVm$ÚRETURNS[TypedVariable];ThisyieldsaTypedVariablethatrepresentstheindicatedglobalframe.(d)FromotherremoteCedarvalues(RTTRemoteBridge)TVForRemotePointerReferent:PROC[remotePointer:RemotePointer,type:Type,status:Status_mutable]RETURNS[TypedVariable];TVForRemoteFHReferent:PROC[remoteFrameHandle:RemoteFrameHandle,evalStack:WordSequence_NIL]RETURNS[TypedVariable];ThisyieldsaTypedVariablethatrepresentstheindicatedlocalframe.ThestructureofnestedblocksandtheirlocalvariableswillbedeterminedfromthePCthatisstoredintheframe.BEWARE.ThisisUNSAFE.ReferencetothisTypedVariableafterthespecifiedframeisnolongervalidwillleadtomanifestationsofstrangeandwondrousphenomena(RTTypesfunctionsthatdealwithframevaluesvalidatethemwhereverpossible,butaccidentscanstillhappen.)TVForRemoteGFHReferent:PROC[remoteGlobalFrameHandle:RemoteGlobalFrameHandle]RETURNS[TypedVariable];TVForRemotePD:PROC[remotePD:RemotePD]RETURNS[TypedVariable--procedure--];TVForRemoteSED:PROC[remoteSED:RemoteSED]RETURNS[TypedVariable--signal,error--];4.3HowtoacquirealocalCedarvaluefromaTypedVariable(RTTBridge)RefFromTV:PROC[tv:TypedVariable]RETURNS[REFANY];Ifpossible,thisreturnstheREFthatpointstothevaluerepresentedbytv.ThisraisesInternalTViftvisembedded,NotMutableifTVStatus[tv]#mutable.SomeRefFromTV:PROC[tv:TypedVariable]RETURNS[REFANY];LikeRefFromTV,butcreatesacopyofthespecifiedvalueincollectiblestorageandreturnsaREFtothecopyinsteadofraisinganerror.ReadOnlyRefFromTV:PROC[tv:TypedVariable]RETURNS[REFREADONLYANY];Ifpossible,thisreturnsaREADONLYREFthatpointstothevaluerepresentedbytv.ThisraisesInternalTViftvisembedded.PointerFromTV:PROC[tv:TypedVariable]RETURNS[LONGPOINTER];TVToATOM:PROC[tv:TypedVariable]RETURNS[ATOM];TVToProc:PROC[tv:TypedVariable]RETURNS[PROCANYRETURNSANY];TVToSignal:PROC[tv:TypedVariable]RETURNS[ERRORANYRETURNSANY];ThesereturnthevaluerepresentedbythespecifiedTypedVariable.IftvisNIL,they5tîïb rî´ï_›îÎîºîã î)2î, î2ƒî4âî:Öî>ùî1ï]îoîDîãî Šî$¢î(ÐtîòïZ�î+0î;J î+ŸïXãî/Éî+ŸïW7î1î6Pî7ÜîïUŠîòïSî5*îòïQ^î) ïO± î1 î<•î> îïNrî´ïKî¬îwî î(¬î+Y î1ºî3øî9Êî<ïîAîCÒî´ïIØîsîÉî"î$Ñî(î+jî1+î3Üî5Ó î="î@�îBõîEOîH#î´ïH0î¿îUîœî#Òî*¾î-Àî/î5¶î< î=·î@@ î´ïF‰îûîgî#.î'1î(¨î*»î/ î2}î54î8:î9ô îC îDÑî´ïDâîKî €î'Õî.+î4 î6·î9�î<Šî@`îDnî´ïC:î=î!/î&Éî)Jî/3î1¾î4_tîòï@µî¥ï?î4¬î ï=\îòï:Ö î!¾ î.ªî ï9*ð$îòï6¤î"—î0\ î ï4øî0irîoï/íî¬î î·î—îÀî î$î'Èî+/î,Y î5¨ tî1ï-g î5î"a î-ø î8Ãrîòï*âîaîçîuî#î%aî(©î+dî/tî1î3[î6ñ î>Htî@0ï*âî@¿ï*ârîA�ï*âîBÉï*âîEÐîòï): îtîoï):îþï):rîSï):î¶ï):î ¾î'Ñ î/£î1 î8çî:Ìtî1ï&µ î3î&_ î1ö î<Árîòï$/î- î sî#î'’î(Èî,%î-êî0Uî6î9Òî;‹ îBîFØîòï"ˆî¥îÏî+îÙî"9î%‹î*>î+÷î0fî2Wtî1ï î")î)U îPïV î!î)¯rîòïÑî…î/îáî#¤î$Þî-±î1î3üî80î9îî<^î@ îG“tîòï)rîRï)î²ï)îÌî‹ î%§tî'ï)î'—ï)rî(ìï)î)Oï)î*Xtî1ï¤ îÿî%+ î0 î<Úî1ïî*î"U î-ì î1ï™î.î!Y îPïì î"‰î&0î-šî1ïg îKî"v îPï º î#bî'î.srîòï 5îõî$î„î#. î*™î,•î.õî4² î>Þvî@`ï 5î@Îï 5rîBï 5îBfï 5vîCpï 5îDmï 5rîE¢ï 5îFï 5vî)ÈïýÿPTVm$šreturnnullsignalorprocedurevalues.FHFromTV:PROC[tv:TypedVariable]RETURNS[PrincOps.FrameHandle];GFHFromTV:PROC[tv:TypedVariable]RETURNS[PrincOps.GlobalFrameHandle];ThesereturnanappropriatekindofpointertothevaluerepresentedbythespecifiedTypedVariable.TVToLC:PROC[tv:TypedVariable]RETURNS[LONGCARDINAL];TVToInteger:PROC[tv:TypedVariable]RETURNS[INTEGER];TVToLI:PROC[tv:TypedVariable]RETURNS[LONGINTEGER];TVToCardinal:PROC[tv:TypedVariable]RETURNS[CARDINAL];TVToCharacter:PROC[tv:TypedVariable]RETURNS[CHARACTER];TVToReal:PROC[tv:TypedVariable]RETURNS[REAL];TheseproceduresPUNthespecifiedvalueintothespecifiedCedarbasicTYPE.TheyraiseRangeFaultifthesizeofthespecifiedTypedVariableisinappropriate.4.4HowtoacquirearemoteCedarvaluefromaTypedVariable(RTTRemoteBridge)RemoteRefFromTV:PROC[tv:TypedVariable]RETURNS[RemoteRef];RemotePointerFromTV:PROC[tv:TypedVariable]RETURNS[RemotePointer];RemoteFHFromTV:PROC[tv:TypedVariable]RETURNS[RemoteFrameHandle];RemoteGFHFromTV:PROC[tv:TypedVariable]RETURNS[RemoteGlobalFrameHandle];TVToRemotePD:PROC[tv:TypedVariable--procedure,program--]RETURNS[RemotePD];TVToRemoteSED:PROC[tv:TypedVariable]RETURNS[RemoteSED];4.5RemotenesspropertiesofTypedVariables(RTTRemoteBridge)IsRemote:PROC[tv:TypedVariable]RETURNS[BOOLEAN];GetWorld:PROC[tv:TypedVariable]RETURNS[World];GetWorldIncarnation:PROC[tv:TypedVariable]RETURNS[LONGCARDINAL];4.6RTTBridgefacilitiesofinterestonlytoWizardsThefollowingstuffisforusebyWizards.Ifyouneedit,chancesaregoodyou'redoingsomethingwrongWordSequence:TYPE=REFWordSequenceRecord;WordSequenceRecord:TYPE=RECORD[s:SEQUENCEsize:NATOFWORD];TVToWordSequence:PROC[tv:TypedVariable]RETURNS[s:WordSequence];ThisisusefulforTypedVariableswithsize>Size[CODE[LONGINTEGER]].ItwillproducewhatamountstoanuninterpretedbitstringforanyTypedVariable.Loophole:PROC[tv:TypedVariable,type:Type,tag:TypedVariable_NIL]RETURNS[TypedVariable];OctalRead:PROC[tv:TypedVariable,offset:INT]6rîòïb)î!îùîäî!¨î(+tî1ï_¤î±î!Ý î-tuî4ôï_¤î5¾ï_¤tî:¨ï_¤î;Žï_¤ î1ï] îÄî"ï îPï[tuîÐï[tî›ï[ttî#„ï[tî$—ï[trîòïXïîøî*î î&‚î)¶î+sî0?î1ñî4Uî8 î?pîApîCÓîòïWH tî1ïTÃîÃîî î+… î7� î1ïS îûî#' î.¾î1ïQkî)îT î*ë î7î1ïO¿ îìî$ î/¯î1ïN îî%A î0Øî1ïLgîî!- î,Ä rîòïIâîí îíî#~î%Öî+‹î/-î1ÿî4Wî: î>îA‰îFîòïH;î- î¢î!î#bî&î'Çî*&î/â î91î:� îoïE¶î¬î î·î—îÀî!hî%€î))î,�î-º î7 tî1ïC1î ©î'Ô î3kî1ï@­î#Nî*U î5Çî1ï>(î+xî=ø î1ï<�î1ï9üî!8î(c îHï8Pð!î1ï5Ì îWî%ƒî9… îHï4î1ï1› î0î&\ î1órîoï/î¬ îL îÄî!} î+Ptî1ï,’îëî! î,®î1ï* îëî! î,®î1ï'‰î%î/ î=v î1ï%á rîoï#]î¬îó îVî î$îî(î)·î1ï Øîî?î‚î î"Oî$Öî&ãtî+¶ï Ørî,Åï Øî-Iï Øî.Yî1"î4‘î6Qî;zî=ßîAcîE®î1ï1îÔtî9ï¬ î(î#qî%Tî(Ÿî9ïîïTî!Kî#/î+Âî4î7õî;zî>î1ïÏî!Çî(ò îPï# îž rîòïŸî'î®îâî : î*)î-_îîKîþî]î!Šî#Cî'Oî)î-»î/øî2Wî6î<,tî>'ï3>î>¶ï3>rî?‡ï3>tîoï0ºîîI î&àîoï.6îQîBî œrî1ï+²vîÎï+²î&ï+²rîGï+²î«ï+²vîÎï+²îøï+²rî�ï+²î3ï+²î `î"Ûî&Šî(^vî*Ùï+²î+¶ï+² rî5`ï+²î6ï+²î7Ï î>ñîAkîE0vîGï+²îG‰ï+²rî1ï* îËî+îÔvî�ï* îåï* rî!gï* tîoï'†îî,î{ î+î2|rî1ï%î?îŸîwîÌîü î'Äî+Wî,ùî1Šî3Þî7Oî:^î<æî>; îEAîFãî1ï#Zî_îîgî!î$*î&&î(…tîoï Öî@î]î!« î-Bî4­rî1ïRîSîÆî²îî_î"íî&µî(k î1î38î7òî:Nî<µî@:îD|îG;î1ïªî ®ï&îêî~ î+î2î?î"¦î%î+tîoï¢îx îqî ôî&rrî."ï¢î.›ï¢î4ýî8oî=›î?T tîE~ï¢îF†ï¢îŽïö î ƒrî(3ïöî(¬ïöî,)î.ftî3Pïöî3êïövî1ïqrî‰ïqî ïqîYîÖî" î#÷î(!î)÷î.Çî1"î2iî60î8î:„vî@]ïqîA:ïqrîC‚ïqîD|ïqîG/vî1ïÊîPrîÖïÊî|ïÊvî�ïÊî>ïÊrî%PïÊî%ÔïÊî*qî,®î1*tîoïFîŽ îˆî*ï šî©î!Ûî#gî*ï îî; î'ôî)î*ï BîmîÕîavî)Èïöÿ>TVm$ RETURNS[TypedVariable];Newcreatesandreturnsaclearedobject.DefaultInitialValue:PROC[type:Type]RETURNS[TypedVariable];DefaultInitialValueisimplementedonlyfortypeswithconstantinitialization.Atpresentitisnotavailableforprocedureparameterandresultrecordtypes;useIndexToDefaultInitialValuetoexamineeachfield.IndexToDefaultInitialValue:PROC[type:Type--recordorstructure--,index:Index]RETURNS[TypedVariable];Returnsthedefaultinitialvaluefortheindex'thfieldoftype.ObviouslynotinallcasesequivalenttoDefaultInitialValue[IndexToType[type,index]].N.B.ThereareatpresentnooperationsforobtainingaTypedescribingadefinitionsmoduleproceduredefinition;oneinsteadnormallyobtainstheTypeofaspecificexportedimplementation.ThedefaultinitialvaluesthatoneobtainsfromthisTypewillbethoseoftheimplementation,whichmaydifferfromthoseoftheimporteddefinition.TypeClass:PROC[type:Type]RETURNS[Class];IsPainted:PROC[type:Type]RETURNS[BOOL];TRUEiftyperepresentsapaintedtype.7.0ApplicableoperationsforeachClassofTypeThissectioncontainsalistforeachClassofTypeoftheoperationsthatareapplicabletoTypedVariablesandTypesofthatClass.YouwillnotethatsomeoperationsareapplicabletomorethanoneClass.AruntimetestismadeforeachoperationtoverifythatitisapplicabletothegivenTypedVariableorType.RTTypes.TypeFaultisraisedifthistestfails.Index:TYPE=NAT;Thisisanumerictypethatisusedforindexinginsomeoftheproceduresbelow.Generally,thevalidindexrangefortheseis[1..n].definitionThisclassappearstoconfusenewusersoftheRTTypesinterface.ATypehasdefinitionasitsclassIFFitwasdefinedasanidentifierthatisequatedtosomeotherType,asinT:TYPE=RECORD[...Forexample,tv:TV_TVForReferent[NEW[T]];...IFTypeClass[TVType[tv]]#definitionTHENERROR;...IFTypeClass[UnderType[TVType[tv]]]#recordTHENERROR;TypeToName:PROC[type:Type,moduleName:REFRope.ROPE_NIL,fileName:REFRope.ROPE_NIL]RETURNS[Rope.ROPE];IfmoduleNameand/orfileNamearesupplied,TypeNameattemptstodiscoverthemoduleandfilenamesforthemoduleinwhichtypewasdefined.Ifthesuppliedtypehasnoname(e.g.,ananonymousprocedureparameter),NILisreturned.Ground:PROC[type:Type]RETURNS[Type];Thispeelsoffonelayerofdefintion.8tî‡ïb vî1ï_£rî�ï_£îï_£îî¿î!rî"œî'Ztîoï]%îÆ î&¿î+bvî1ïZ§rî_ïZ§îÃïZ§îÖ î(3î+Xî- î1@î4fî9àîB´îD»î1ïYîšîî¢î!pî$Áî,Wî3íî7·î<–îAùîGtî1ïWXrî%ÄïWXî&3ïWXî'rî,ëî0tîoïTÚî#| î,urî0~ïTÚî0÷ïTÚî1õî6Dî8 tî>4ïTÚî?1ïTÚîDîŽïS2rî1ïP´îeîÁîfî"Oî%õî(/vî*‹ïP´î*ãïP´rî.ïP´î.`ïP´î0î3Dvî4ùïP´î5gïP´rî7°ïP´î9 ïP´î?’îBîD/îFî1ïO îßvîŽïO î‹ïO ð$î3rî7ˆïO î1ïL�î§îãîpîBî#Oî%� î,vî.íî5Evî6¨ïL�î7…ïL�rî:‹ïL�î;RïL�îA]îBÀ î1ïJçî'î  î$[î&ýî+§î1mî6-vî8ƒïJçî9_ïJçrî<"ïJçî<ÞïJçî=Òî>òîCÓî1ïI@î îòî$ªî(¥î,ãî/Àî2|î7Tî:Ëvî=|ïI@î>XïI@rîA5ïI@îB2ïI@îCïîEðî1ïG™îêîIî €î$Žî'’î+]î.Äî2cî4î6{î˜îA îGàîoï9| îNîî )î!îî$Èî(¾î+Ùî.�î1¶î4�î8. î>èîAG îGàîoï7ÕîîGîîüî˜î#ßî&zî'õî+Äî.î1Qî7Šî9Hî=Cî@ îA†îC îoï6-îî}î1 î €î"Dwî&$ï6-î&ïï6-rî+ï6-î+çï6-î1®î3î7î8}î;î=ªtîoï3°î_î¨î‹rî1ï12î1îƒî“îÝîÓî"ˆî#Úî&üî) î.«î0@î3¹î5Yî7ž î>ŒîB× î1ï/Šî�îøîÂî�î!Êî%Sî&¿xîoï- rî1ï*�îDîmîqîî$î'î*yî,*î.ƒî4y î:nî;ôî?uxîAãï*�îB“ï*�rîGáï*�îH†ï*�î1ï(çî î;îîiîî#î$Ãî&³ î,¦î/tî0àî6î7Çî;Zî>ùîBÚîDˆzîàï'?îhî îO rî1ï%–îÜzîòï#îRîÚî‰îòï!oîòïÇîzî*î+¸ î4þî96îòïîòïuîzî3Oî4þî:æî?tî1ï÷ î î%xîïN î)Uuî,¡ïNî-tïNtî/íïNî0õïNî4lî5øîï¦î&_uî)ªï¦î*}ï¦tî,öï¦î-þï¦î1uî3îPïýuîÐïýî£ïýtî!ïýî"$ïýrîòïvîˆïî²ïrî‘ïî 6ïvî$Lïî$ºïrî*}ïî+"ïî,ävî2áïî3½ïrî:Qïî:÷ïî?öîA¸îG/îòïØîîâîhî#Éî&#î(Ÿî-»î/…vî3°ïØî4ïØrî7ïØî8ïØî9Ïî?äîAƒîCÿîòï0îîwî}î =î#˜î%ˆî,Ûî3^ î:²î=Äî?0tî1ï ³îu î!oî& rîòï 5î îŠî¼î hî#Ïî%ˆ vî)Èï"TVm$ UnderType:PUBLICPROC[type:Type]RETURNS[Type];Thisreturnsthefirstunderlyingnon-definitiontype.GroundStar:PUBLICPROC[type:Type]RETURNS[Type];Thisfindsthefirstnon-definitiontype,thenpeelsoffsubrangeorrelativeReflayerstoarriveatthe"ground"Type.cardinal,longCardinal,integer,longInteger,real,characterFirst,Last:PROC[type:Type]RETURNS[TypedVariable];Next:PROC[tv:TypedVariable]RETURNS[TypedVariable];Coerce:PROC[tv:TypedVariable,targetType:Type]RETURNS[TypedVariable];Seetheenumeratedsectionforacompletedescription.Coercionsbetweenintegersandcardinalsandtheirsubrangesaresupported.Nocoercionscurrentlyexistbetweenrealsorcharactersandanyothertypes,norarecoercionsto/fromlongnumerictypessupported,althoughthatwouldbeeasy.list,refRange:PROC[type:Type]RETURNS[Type];Thisreturnsthereferenttypeofthespecifiedreftype.Referent:PROC[ref:TypedVariable]RETURNS[TypedVariable];Thisisthedereferencingoperation.ReferentStatus:PROC[type:Type]RETURNS[Status];ThiswillreturnreadOnlyifthereftypeisREFREADONLY...,mutableotherwise.Coerce:PROC[tv:TypedVariable,targetType:Type]RETURNS[TypedVariable];CoercewillproduceaTypedVariable,statusreadOnly,ifappropriatetypeandrangetestsaresuccessful.ItwillproduceaTypedVariableforaREFANYfromaTypedVariableforsomeexplicitREFtype(i.e.,Widen).ItcanalsoproduceaTypedVariableforanexplicitREFtypefromaTypedVariableforaREFANYwhosecurrentreferentisofanacceptabletype(i.e.,Narrow).pointer,longPointerRange:PROC[type:Type]RETURNS[Type];Thisreturnsthereferenttypeofthespecifiedpointertype.Referent:PROC[ref:TypedVariable]RETURNS[TypedVariable];Thisisthedereferencingoperation.ReferentStatus:PROC[type:Type]RETURNS[Status];ThiswillreturnreadOnlyifthepointertypeis...POINTERTOREADONLY...,mutableotherwise.descriptor,longDescriptorRange:PROC[type:Type]RETURNS[Type];Thisreturnsthereferenttypeofthespecifieddescriptortype.ReferentStatus:PROC[type:Type]RETURNS[Status];9tî1ïb îî! î*î.³ rîòï_£î î¿îî!÷ î(ç î1ôtî1ï]& î‚î!… î*~î/! rîòïZ©î!î©îî! î*,î-©î0äî4wî6¾î<°î>ˆ îE¤îòïYî¡îŒî$î„î$®xîoïV…î îwî"P î)ãî,òtî1ïTî‡î› î#”î(7î1ïQ‹îqî� î)4î1ïOîUî€ î*÷ î3ÏîPïMfrîòïJéî}xîÑïJéîlïJérî!ïJéî!…ïJéî%’î'Ãî(áî.¾ î6î<{xîAÞïJéîBAïJérîEÛïJéîFØïJéxîòïIBrî§ïIBîÝïIBîÂî!6î'Äî*E î1óî4ƒî:¸î@ÃîD xîòïGšrî%ïGšî/ïGšxîôïGšî�ïGšrî[ïGšî eïGšî#î%Àî)`î-Nî/Ùî2.î88î={î@–îEûîòïEó îÃî!î$Mî(|î*lxîoïCvîtî1ï@ùî° î ©î%L rîòï>|î î¿îî$Kî'[î)î+sî1/î3Vtî1ï;ÿîrî!N î,årîòï9‚î îxîØ î$v tî1ï7î! î'î+½rîòï4ˆî î¸vîæï4ˆîkï4ˆrî%;ï4ˆî%žï4ˆî&œî(ûî+#î.3vî/žï4ˆî0œï4ˆî2Ùrî:ƒï4ˆî:Úï4ˆvîî^î î"øî$Ëî'Òî-‡î/ î8¸î;Qî<×î@�îD¢îHeîòï*— î‘î!î%î*%î-Ñî10î4Žî:þî<Åî? îB¼îHeîòï(ð î4î eî"Hî'î*^î-aî0»î1Ø î;î=Jî>gîA¶îEaîòï'Hî¼îèî Sî" î#ý î*¬î-¼î0Êxîoï$Ëî] tî1ï"Nî° î ©î%L rîòïÑî î¿îî$Kî'[î)î+sî1/î5øtî1ïTîrî!N î,årîòï×î îxîØ î$v tî1ïZî! î'î+½rîòïÝîLî7vî¦ïÝî *ïÝrî&:ïÝî&�ïÝî'Ûî*zî/ƒî2Òvî4~ïÝî4áïÝî6kî=Mî@rîG¬ïÝîHïÝvîòï6rî–ï6îQï6xîoï¹ îó tî1ï<î° î ©î%L rîòï ¿î î¿îî$Kî'[î)î+sî1/ î7œtî1ï Bî! î'î+½vî)ÈïMTVm$ñThiswillreturnreadOnlyifthedescriptortypeis...DESCRIPTORFORREADONLY...,mutableotherwise.Apply:PROC[tv:TypedVariable,arg:TypedVariable]RETURNS[TypedVariable];ThisreturnsaTypedVariableforthespecifiedelementofthespecifiedarray.NOTE:Applyfordescriptorsisnotimplementedyet.procedureDomain:PROC[type:Type]RETURNS[Type];Range:PROC[type:Type]RETURNS[Type];TVToName:PROC[tv:TypedVariable]RETURNS[ans:Rope.ROPE];StaticParent:PROC[tv:TypedVariable]RETURNS[TypedVariable--proc--];--maybeNILGlobalParent:PROC[tv:TypedVariable]RETURNS[TypedVariable--globalFrame--];signalDomain:PROC[type:Type]RETURNS[Type];Range:PROC[type:Type]RETURNS[Type];TVToName:PROC[tv:TypedVariable]RETURNS[ans:Rope.ROPE];GlobalParent:PROC[tv:TypedVariable]RETURNS[TypedVariable--globalFrame--];errorDomain:PROC[type:Type]RETURNS[Type];TVToName:PROC[tv:TypedVariable]RETURNS[ans:Rope.ROPE];GlobalParent:PROC[tv:TypedVariable]RETURNS[TypedVariable--globalFrame--];programDomain:PROC[type:Type]RETURNS[Type];Range:PROC[type:Type]RETURNS[Type];TVToName:PROC[tv:TypedVariable]RETURNS[ans:Rope.ROPE];portNospecialoperations(yet).enumeratedNameToIndex:PROC[type:Type,name:Rope.ROPE]RETURNS[Index];Therangeofindexis[1..NValues[type]].NameToIndexraisesBadNameIndexToName:PROC[type:Type,index:Index]RETURNS[Rope.ROPE];RaisesBadIndex.TVToName:PROC[tv:TypedVariable]RETURNS[ans:Rope.ROPE];First,Last:PROC[type:Type]RETURNS[TypedVariable];Next:PROC[tv:TypedVariable]RETURNS[TypedVariable];NextreturnsNILifthereisnosuccessortotv.NValues:PROC[type:Type]RETURNS[Index];Value:PROC[type:Type,index:Index]RETURNS[TypedVariable];ThisreturnsaTypedVariablefortheindex'thelementoftheenumeratedtype.The10rîòïb)î±îvî Ôïb)î!Xïb)rî'Íïb)î(1ïb)î)Óî,× î3èî7�vî9­ïb)î:ïb)î;ÿ îF(îòï`‚rîœï`‚îôï`‚vîï`‚î©ï`‚rî$#ï`‚î$ßï`‚tî1ï]ýîWîƒ î)ùî-S îHï\QrîòïYÍîîÂîí î'>î)|î+Ýî1šî6Óî8�î:îî@«îDŒîòïX%î î] î"Nî#ºî&/ î.�xîoïU¡tî1ïSî– î!�î&2 î1ïQqî° î ©î%L î1ïOÅîÝî" î-  uî8°ïOÅî9„ïOÅtî;ýïOÅî=ïOÅî1ïN î=î#h îHïLmrî'BïLmî'»ïLmtî+ÉïLmî,bïLmrî-ãïLmî.]ïLmî/Zî3Ëtî1ïJÁ îŸî#Ë îHïIrî'BïIî'»ïI tî0¦ïIî1@ïIxîoïF�tî1ïD î– î!�î&2 î1ïB`î° î ©î%L î1ï@´îÝî" î-  uî8°ï@´î9„ï@´tî;ýï@´î=ï@´î1ï? îŸî#Ë îHï=\rî'Bï=\î'»ï=\ tî0¦ï=\î1@ï=\xîoï:×tî1ï8Sî– î!�î&2 î1ï6§îÝî" î-  uî8°ï6§î9„ï6§tî;ýï6§î=ï6§î1ï4û îŸî#Ë îHï3Orî'Bï3Oî'»ï3O tî0¦ï3Oî1@ï3Oxîoï0Êtî1ï.Fî– î!�î&2 î1ï,šî° î ©î%L î1ï*îîÝî" î-  uî8°ï*îî9„ï*îtî;ýï*îî=ï*îxîoï(irî/ï(iî’î î$»xîoï%å tî1ï#a îí î%æî*huî/Mï#aî0 ï#atî2™ï#aî3¡ï#aî7²rîòï ÜîÊî•tîNï Üî¼ï Ürî!ºï Üî"ï Üî#&î.;vî/ï Üî0ï Ü rî8…ï Üî9 ï ÜîóîAxîEQîG/îòïóî&îCî ¡î$hî&Îî)vî,®ïóî-•ïórî;Yïóî;Þïóî@îB{îE-îFíîòïL î(tî1ïÎ îí î%æî*huî/MïÎî0 ïÎtî2™ïÎî3¡ïÎî7²rîòïPî î¿îî"Þî$—î&÷î,#î0Àî4svî8·ïPî9ªïPrî>õïPtî1ïÓ îí î%æî*hî/Mî4^uî;ÞïÓî<²ïÓtî?+ïÓî@3ïÓrîòïUvî6ïUî)ïUrîHïUtî1ï×îÌîø î(�rî:ˆï×î;ï× tîCuï×îDï×î1ïZîkî– î+-rî='ïZî= ïZtîB×ïZîCqïZrîòï Üî)îøvî>ï Üîï Ü rî(ï Üî(�ï Üî*oî,êî2äî8-î==î?îEîG/îòï 5îàîœî &î$Zî)¡î+vî-î/Wî4ëî8„î:!îmî÷î•vî©ï>mî†ï>m rî'Oï>mî'Èï>mî)wî+Áî1gî6‰î8-î:wî@îF·îòï<Æîî¯î"î$î%¶î(vî+àï<Æî,²ï<Æð&tî1ï:HîÌîø î(� î56rîòï7ÊîîÕvî ï7Êîçï7Ê rî'Ðï7Êî(Iï7Êî*î,ƒî0Xî3Ÿî6Úî8žî;îAâîDÅîòï6# îÑî$Œî'8vî(æï6#î)Ùï6#rî-ºï6#î.(ï6#vî/hï6#î/Öï6#rî32ï6#î4ï6#î6�î9Gî?PîAWtî1ï3¥îîI î*àrîòï1'îî¨vîÅï1'îJï1'î$ rî-¾ï1'î.7ï1'î/ïî2Cî6pî8î=·î?dîEîG/îòï/€îÌî!* î(±î*}î+Äî.ûî4®î7¤î;ïîA¨vîCÁï/€îDžï/€rîFØï/€îG}ï/€vîòï-Ùrîñï-Ùîïï-Ùîœî�î$3î%”vî'óï-Ùî(Ðï-Ùrî.ï-Ùî.Øï-Ùî0†î1°î7uî;?xîoï+[îërî1ï(Ýî˜îrîè î%9î(bî*î,üî1[î4þî7aîáîAœîEûî1ï'6î” îªî Žî$2î&–î)~î+<xî-=ï'6î-íï'6rî1{ï'6î2fï'6î5›î;hî? îAo îH.î1ï%Žî‚îÂî`î ¾ î'Ïî)‡î+ðî/¯î1r î8åî:¾î?‘îD îFuî1ï#çîî±îî$·î)‹î-mî3Œî9Îî<�î@€îD„î1ï"@îÏî÷î ãî#›î*Iî-Ýî0«î2ÿî7ÿî9­î?<î1ïÂîîáîtî cî"˜î(î*î-mî/_î0Ì î9Åî<�î> îB�îGî1ïî^îÐîŽî¾î!»î%²î'Dî+™î/Íî2Sî9€î:òî<°î=àîCÎîFãî1ïsîFî¬îîRî î)òî-ìî/Êî2N î9 î;Kî>øîCñîGàî1ïÌî¨îåîfî î#@î-zî1‹î5Dî:'î;Ãî>îCæîE˜î1ï%îÅî|îÃî%ïî'�î-Çtî1ï§î"U î+Nî/ñ î1ï) î9 î&3î*Õî1ï« îÇî!ó î-iî2NîPïrîòï …îÊî•tîNï …î¼ï …rî!ºï …î"ï …î#&vîòï Üîrî…ï Üî+ï Üî"Dî%3î+·î3oî5¸î8§î=†î?ÚîF'îHeîòï 5 vî)eïöÿÊTVm$çIndexToType:PROC[type:Type,index:Index]RETURNS[Type];Hereindexisusedtoselectoneofthetypesofthecomponentsofarecordorstructure.IndexToName:PROC[type:Type,index:Index]RETURNS[Rope.ROPE];Hereindexisusedtoselectoneofthenamesofthecomponentsofarecordorstructure.NameToIndex:PROC[type:Type,name:Rope.ROPE]RETURNS[Index];NameToIndexreturnstheindexofthecomponentintherecordorstructuretypethathasthespecifiedname.NameToIndexraisesBadNameifthegiventypehasnocomponentwiththespecifiedname.VariableType:PROC[type:Type]RETURNS[v:Type,c:Class];Iftyperepresents:Aunion-record:cisunion,andvisthetypeoftheunioncomponent.Asequence-record:cissequence,andvisthetypeofthesequencecomponent.Anythingelse:cisnil,andvisundefined.VariableTypemakesitpossibletodeterminewhetherrecordsofthistypecontainanyelementswithvariablestructure.Ifcisunionorsequence,nisNComponents[type],andtvisaTypedVariablesuchthatTVType[tv]=type,thenIndexToType[type,n]yieldsv,andIndexToTV[tv]yieldsaTypedVariabledescribingtheunionorsequence,foruseinthefunctionsdescribedinthesectionsbelow.Size:PROC[type:Type,length:CARDINAL_0]RETURNS[CARDINAL];IfVariableType[type].class=union,Sizereturnsthesizeofthelargestvariant.IfVariableType[type].class=sequence,thecallermustsupplyaproposedlength,andSizereturnsthesizeofasequence-recordwhosesequencecontainslengthelements.arrayIsPacked:PROC[type:Type]RETURNS[BOOL];Domain:PROC[type:Type]RETURNS[Type];ThisreturnstheindexTypethatisassociatedwiththespecifiedarrayType.Range:PROC[type:Type]RETURNS[Type];ThisreturnstheelementTypethatisassociatedwiththespecifiedarrayType.Apply:PROC[tv:TypedVariable,arg:TypedVariable]RETURNS[TypedVariable];ThisreturnsaTypedVariableforthespecifiedelementofthespecifiedarray.countedZoneNospecialoperations(yet).uncountedZoneNospecialoperations(yet).nilThisisTypeClass[RTBasic.nullType].Nospecialoperations(yet).unspecifiedThisisTypeClass[Range[CODE[POINTERTOUNSPECIFIED]]].Nospecialoperations(yet).13tî1ïb îi î%bî)äî.Éî3Ú rîòï_›tîŸï_›î ï_›rîDï_›î§ï_›îéî"^î$Fî(?î+$î-î/¯î3|î5nî8 î?íîAßîCBîGÊîòï]ô tî1ï[o îí î%æî*hî/Mî4^uî;Þï[oî<²ï[otî?+ï[oî@3ï[orîòïXétî”ïXéîïXérî.ïXéî‘ïXéîÈî"2î$î'ýî*×î,¾î/Lî3¾î5¥î83 î@îAõîCMîGÊîòïWB tî1ïT½ îí î%æî*huî/MïT½î0 ïT½tî2™ïT½î3¡ïT½î7²vîòïR7 rîSïR7î×ïR7î"ùî%Kî) î*µî-î4"î5Ãî8îîC¾îFÁîòïP�î¯îVî Yvî$·ïP�î%µïP� rî.mïP�î.ñïP�î2sî9*î:Òî=yîAuîDÌîG‰îòïNéîî5î!”î'Ptî1ïLc îÀ î%¹î*\î1Çî4.î8°î:‰rîòïIÞvîtïIÞîâïIÞrî¯ïIÞî3ïIÞ î´ïGYî@ tî!õïGYrî#UïGY{î$ÁïGYî%“ïGYrî(_ïGYî)<ïGYtî+óïGYrî-HïGYî.´î1î4$î5Ýî8<î<3 î´ïDÔî4tî#ÍïDÔrî% ïDÔ{î&ïDÔî'0ïDÔrî,½ïDÔî-�ïDÔtî08ïDÔrî1€ïDÔî2ßî52î85î9áî<4îB î´ïBNîÇtî ÷ïBNrî"WïBN{î#ÃïBNî$•ïBNrî%EïBNî&!ïBNtî(ÙïBNrî*.ïBNî+š tîòï?É rî"ï?Éî Lï?Éî#tî$äî*@î,î2£î8 î<øî>ËîA†îD¯îòï>"î“îNî iî%  îòï;œtîoï;œrîÊï;œî1î#îátî%ï;œrî&ƒï;œvî'êï;œî(çï;œrî4³ï;œî5‹ï;œtî8=ï;œî8Ìï;œrî:ï;œî:ï;œî;‚vî<§ï;œî=„ï;œ rîF]ï;œîFáï;œîòï9õvî§ï9õîƒï9õ rî"¸ï9õî#{ï9õvî&‡ï9õî&êï9õrî4*ï9õî4Ûï9õtî7üï9õrî8Íï9õî9�vî<-ï9õî<‘ï9õ rîE£ï9õîFTï9õîòï8Nvîï8Nîöï8N rîÑï8Nî ˜ï8Nî&gî(Ãî,·î.xî4µî6ðî9bî; î=iîCdîòï6¦î îî!tî1ï4!î: î3î#µî)4î2oî4~rîòï1œvîtï1œî\ï1œ{î'Œï1œî(^ï1œrî+*ï1œvî,ï1œî,îï1œrî/Aï1œî/Æï1œî3ôî6Tî8ÿî:¸î=îArîòï/vîœï/î„ï/{î'´ï/î(eï/rî-òï/î.÷ï/î1î5\î8ìî=…î>×îDýîòï-ovîï-oîëï-orî˜ï-oîï-oî ¥î#_î&dî(wî)ûî4‚î9 î?LvîE ï-oîEbï-orîòï+Èxîoï)Ctî1ï&½îË î"Äî'g î1ï$8î– î!�î&2 rîòï!³î î¿îî"êî&rî)@î*¬ î1î43î6“îÏî@ùîE˜îoï]üîšîüî x î'&xîoï[rî ï[î/ï[îoîê î!˜xîoïYrî/ïYîJîµî.0î3iî5Ëî:G î@õxîoïV„ tî1ïTîÝî" î-  uî8°ïTî9„ïTtî;ýïTî=ïTî1ïR^î¡îÌ î+crî=]ïR^î=ÖïR^tîC ïR^îC§ïR^xîoïOá tî1ïMd î±î!Ý îPïK»rî(JïK»î(ÃïK» tî0.ïK»î0ÇïK»rîòïI>î*îúvîAïI>îïI> rî(ïI>î(“ïI>î*tî,ñî3‘tî5ìïI>î6{ïI>rî7íïI>î8\ïI>î:¬î<5î=|î@ßîEKvîòïG—rîËïG—î.ïG—î,î‹î#‚î$îî&î)­tî1ïEî¥îÐ î*grîxîCî!o î,åî1ÊîPï<Ïrîòï:Rîoî…vîï:Rîïï:R rî)1ï:Rî)ªï:Rî+Ñî.“î4²î;?î=[î@îGîòï8« î]tîXï8«îçï8«rî¸ï8«tî1ï6-îÆîñ î*gî/LîPï4…rîòï2îüîžvî·ï2î“ï2 rî'aï2î'Úï2î)Žî+Üî1‡î5Bî6êî98î?ªîB% îòï0`tîîï0`î}ï0`rîNï0`tî1ï-ã îºî$æ îPï,:rî(Jï,:î(Ãï,: tî0Ñï,:î1kï,:vîòï)½rî ðï)½î!•ï)½î')î)Æî-Iî2Xî8$î=aî@äîBÏîHevîòï( rîåï(î¬ï(î%´î(Kî.øî2ï î:éî=îAîDÇîG‰vîòï&o rîï&oîáï&oî%vî&3ï&oî'ï&o rî/÷ï&oî0{ï&o î7Øî:@î=ÆîAîEmîGöîòï$ÇînîšîVî!¸î#�î'jî-<î0÷vî3‰ï$Çî4Zï$Çrî8aï$Çî8Ðï$Çî:,î>�vî?Ôï$Çî@°ï$Ç rîòï# î›î î!bî'-î(Öî,î0Ztî1ìï# î2{ï# rî3àï# î4†ï# î8Ä î?WîAÇîEvvîòï!y rîï!yî–ï!yvî#Äï!yî$Âï!yrî%÷ï!yîòïûvî‘ïûîxïû rî Íïûî!0ïûî"Uî'\î)'tî*mïûî*üïûrî,nïûî,òïû î4bî5©î9Zî=Æî?9îBYîF¥îGëîòïT îÄî\î"` î*[î,ôî0Âî5aî9¨vî=ïTî>ïTrî?9ïTî@pïTîCKîDðîGàîòï­ îQîÿî _î%'î(çî+žî,õî1q î8 î9ù tî1ï/îÜî î*žrî<˜ï/î=ï/tîBHï/îBâï/rîòï²îîÜvîï²îñï² rî'Þï²î(Wï²î*)î+aî1, î7Óî:Aî>î?ÖîBDîE˜îòï îªîBî¢îaî"§ î*tî, ï î,œï rî-mï tî1ï� îŸî#Ë îPïårî(Jïåî(Ãïå tî1®ïåî2Hïårîòïhî î¿vîéïhîÆïh rî'¤ïhî(ïhî)âî,Aî0dî4Z î=Qtî?ïhî?Žïhrî@_ïhî@¸ïhîAÀîEtî1ï ê îAî%m îPï Brî(Jï Bî(Ãï Bî/ î06 tî7Ëï Bî8eï Bvî)eïöÿðTVm$2ThisreturnsaTypedVariablefortheframeofthecalleroftheframerepresentedbytv.ThiswillnormallybealocalFrameTypedVariable,butstrangethingshappenattherootofprocessesandwhenPORTsareused.Normally,therootlocalFrameofaprocessisaprogramTypedVariable.Morecanbesaidaboutallofthis,butthisisnottheplace.8.0ERRORsError:ERROR[reason:ErrorReason,msg:ROPE_NIL,type:Type_RTBasic.nullType,--usedwithTypeFault,IncompatibleTypesotherType:Type_RTBasic.nullType--usedwithIncompatibleTypes];ErrorReason:TYPE={noSymbols,--msghasmoduleNamenotImplemented,--mostlyDefaultInitialValuecasesincompatibleTypes,--raisedbyAssignrangeFault,--e.g.emptysubrange,ApplyboundschecknotMutable,--raisedby(e.g.)AssigninternalTV,--raisedby(e.g.)RefFromTVbadName,--raisedbyNameToIndexbadIndex,--raisedby(e.g.)IndexToTypetypeFault--generalapplicabilityviolation};9.0ExamplesTheexamplebelowcomesdirectlyfromoneofmytestprograms,andhasseveralstrangepropertiesanddependencies,noneofwhicharerelevanttoitsvaluehereasasourceofexamples.PrintTV:PROC[tv:RTTypes.TV,depth:CARDINAL_0]=BEGINOPENRTTypes;type:Type=TVType[tv];SELECTTypeClass[type]FROMunion=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aunion)Tag="];PrintTV[Tag[tv]];THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["Variant="];PrintTV[Variant[tv],depth+1];};definition=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(adefinition)="];WriteString[TypeToName[type]];WriteLine[""];PrintTV[Coerce[tv,UnderType[type]],depth+1];};localFrame=>{pt:TV=Procedure[tv];THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;15rîòïb)îîÂvîîïb)îÊïb) rî'ªïb)î($ïb)î)éî,Jî0Bî1ýî4^î8î9ÎîÙîBÿîGöîòï^Úî\îTîî"î$àî(žî-†î/äî3�î:îî!à î+`î/î1—î3}î6Lî:$î< î=¹î@©îC îE¸îGîòï[ŒîRî ®ïV�îêîxïTqî¥ïTî^ïTrî£ïRhîïRhîÙ î8ïP¿qî”ïP¿îhïP¿rîïP¿qî œïP¿î!…ïP¿rî"¨ïP¿î8ïOîÁîJî ×xî,bïOî,ÜïOî-Ùî0êî3æ î:·rî8ïMm îUî"Ýî$jxî0¦ïMmî1ïMmî2î5.î8)rî/ïKÄîxïJ qîÿïJî¸ïJrîVïJîßïHs xî)ŸïHsî*ïHsî+î-åî0[ rîçïFÊxî*0ïFÊî*©ïFÊî+§î/ïî;ÝrîçïE!xî*ïE!î*}ïE!î+{î/gî1ArîçïCx xî)RïCxî)ËïCxî*Éî-Iî1Dî7Qî;<î?ÑrîçïAÏ xî)×ïAÏî*QïAÏî+Nî/:î1î4‡rîçï@& xî)áï@&î*Zï@&î+Xî/Dî1î4�rîçï>}xî*>ï>}î*·ï>}î+µî/ î1z rîçï<Ôxî*ï<Ôî*‡ï<Ôî+…î/qî1Kî4¾ rîçï;+xî)Hï;+î)Áï;+î*¿î/€ î7rîcï9‚î ®ï7îêîoï4†î~î.îrî ×î&î)¢î,„î.tî1 î3Íî:oî=]î@ îDÑîoï2ß î-î* î"Gî&î'ÿî,Sî.íî4uî6jî8‹î<{î?ÜîAÐîC@îGÖîoï17yîoï.¹rîYï.¹qîWï.¹îþï.¹rîzï.¹îÝï.¹îúqî Êï.¹î!ƒï.¹rî"Nï.¹î#+ï.¹qî'‘ï.¹î(\ï.¹rî.2ï.¹î/¿ï.¹î1Wqîoï-îŒrîï-î$ï-îxï+gîî‰îo qîxï(îï(rî0ï(îï( qîï(îÒï(rî€ï&lîwî‰ï$Äqî¾ï$Äîwï$Ärî1ï$Äî”ï$Äqî Zï$Äî!@ï$Ärî"†ï$Äî#çï$Äqî,yï$Äî-ï$Ärî-Àï$Äqî.¨ï$Äî/aï$Ärî4Iï$Äî‘ï#î9î!©î$kî&Pî‘ï!rqî‘ïÉîKïÉrîïÉîhïÉqî .ïÉî!ïÉrî"ZïÉî#»ïÉqî,MïÉî,ìïÉrî-”ïÉqî.|ïÉî/5ïÉrî4ïÉî‘ï î î"dî‘ïwîïî#Ýî%Âî‰ïÎî€ï% îËî‰ï|qî¾ï|îwï|rî1ï|î”ï|qî Zï|î!@ï|rî"†ï|î#çï|qî,yï|î-ï|rî-Àï|qî.¨ï|î/aï|rî4Iï|î‘ïÓî9 î#ýî%âî‘ï*î‘ï� î‘ïØîJî*¶î.£î0ˆî‰ï0î€ï ‡ î§î‰ï Þî¾qîñï Þîªï Þrîßï ÞîÄï Þ qî‘ï 5îKï 5rîï 5îhï 5qî .ï 5î!ï 5rî"Zï 5î#»ï 5qî,Mï 5î,ìï 5rî-”ï 5qî.|ï 5î/5ï 5rî4ï 5vî)eïý TVm$ÉWriteString["(alocalframefor"];IFTypeClass[TVType[pt]]=programTHEN{WriteString["theprogramnamed"];WriteString[TVToName[pt]];WriteLine[")"];RETURN};WriteString[TVToName[pt]];WriteLine["):"];IFEnclosingBody[tv]=NILTHEN{domainType:Type=Domain[TVType[pt]];rangeType:Type=Range[TVType[pt]];IFdomainType#RTTypesBasic.nullTypeTHEN{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["Arguments:"];FORi:CARDINALIN[1..NComponents[domainType]]DOTHROUGH[0..depth]DOWriteChar[Ascii.SP]ENDLOOP;WriteString[IndexToName[domainType,i]];WriteLine[":"];PrintTV[Argument[tv,i],depth+2];ENDLOOP};IFrangeType#RTTypesBasic.nullTypeTHEN{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["Results:"];FORi:CARDINALIN[1..NComponents[rangeType]]DOTHROUGH[0..depth]DOWriteChar[Ascii.SP]ENDLOOP;WriteString[IndexToName[rangeType,i]];WriteLine[":"];PrintTV[Result[tv,i],depth+2];ENDLOOP};THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["Locals:"];PrintTV[Locals[tv],depth+1]}ELSE{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["EnclosingBody:"];PrintTV[EnclosingBody[tv],depth+1]};};globalFrame=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aglobalframefor"];WriteString[TVToName[tv]];WriteLine["):"];PrintTV[Globals[tv],depth+1];};nil=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(novalue)"];};countedZone=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(acountedZone)"];};uncountedZone=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(anuncountedZone)"];16rî‘ïb!î9î î$uî&³qîï`xî€ï`xrî£ï`xîŠï`xî#åî%Ëqî+Yï`xî,ï`xrîï^ÏîTî!Áî'Zî+êî.î?Þqîoï](rîWï](îï](î‘ï[î‘ïYÖ î/qî‘ïX.îûïX.rîïX.îïX.î hqî"MïX.î#5ïX.î$ÂrîïV…îJ îÈî!Pî#5îïTÜ îfîïî!ÔqîïS4îˆïS4rî«ïS4îrïS4î¯î ”qîAïQ‹îúïQ‹rîìïQ‹qîœïQ‹rî$ïQ‹î$sïQ‹qî*9ïQ‹î+ïQ‹rî,eïQ‹î-ÆïQ‹qî6XïQ‹î6÷ïQ‹rî7ŸïQ‹qî8†ïQ‹î9?ïQ‹rî>'ïQ‹î¼ïOâqî¼ïN:îvïN:rî�ïN:îóïN:qîðïN:î»ïN:î#‘rî%MïN:î%±ïN:qîcïL‘îIïL‘rqîÎïJèî‡ïJèrî!AïJèî!¤ïJèqî'TïJèî(:ïJèrî)€ïJèî*áïJèqî3sïJèî4ïJèrî4ºïJèqî5¡ïJèî6[ïJèrî;BïJèîÎïI?ð#î3‚îÎïG— î"òîÎïEîî(kî*î-ûî/áqîIïDEîïDErîêïDEî ›ïDEqîïB�îˆïB�rî«ïB�î/ïB�îzî_qîAï@ôîúï@ôrîìï@ôqîœï@ôrî$ï@ôî$sï@ôqî*9ï@ôî+ï@ôrî,eï@ôî-Æï@ôqî6Xï@ôî6÷ï@ôrî7Ÿï@ôqî8†ï@ôî9?ï@ôrî>'ï@ôî¼ï?Kqî¼ï=£îvï=£rî�ï=£îóï=£qîðï=£î»ï=£î#‘rî%Mï=£î%±ï=£qîcï;úîIï;úrqîÎï:Qî‡ï:Qrî!Aï:Qî!¤ï:Qqî'Tï:Qî(:ï:Qrî)€ï:Qî*áï:Qqî3sï:Qî4ï:Qrî4ºï:Qqî5¡ï:Qî6[ï:Qrî;Bï:QîÎï8¨ð"î2MîÎï7 î"òîÎï5Wî&.î'Ñî+¿î-¤qîIï3®îï3®rîêï3®î ›ï3®qîï2î×ï2rî’ï2îõï2qî!»ï2î"¡ï2rî#çï2î%Hï2qî-Úï2î.yï2rî/!ï2qî0ï2î0Âï2rî5©ï2îï0]îï.´î áî$Ïî&´qî‘ï- îKï- rîÆï- qîûï- î´ï- rînï- îÑï- qî$—ï- î%}ï- rî&Ãï- î($ï- qî0¶ï- î1Vï- rî1ýï- qî2åï- î3žï- rî8†ï- î/ï+cî/ï)ºî(î+õî-Úî‰ï(î€ï&i îƒî‰ï$Àqî¾ï$Àîwï$Àrî1ï$Àî”ï$Àqî Zï$Àî!@ï$Àrî"†ï$Àî#çï$Àqî,yï$Àî-ï$Àrî-Àï$Àqî.¨ï$Àî/aï$Àrî4Iï$Àî‘ï#î9î![î%Rî'�î‘ï!oî‘ïÆ î/î‘ïî &î$î%øî‰ïtîïÌî‰ï#qî¾ï#îwï#rî1ï#î”ï#qî Zï#î!@ï#rî"†ï#î#çï#qî,yï#î-ï#rî-Àï#qî.¨ï#î/aï#rî4Iï#î‘ïz î8î![î ïÒî€ï) îWî‰ï€qî¾ï€îwï€rî1ï€î”ï€qî Zï€î!@ï€rî"†ï€î#çï€qî,yï€î-ï€rî-Àï€qî.¨ï€î/aï€rî4Iï€î‘ïØ î[ î%'î ï/î€ï † îäî‰ï Ýqî¾ï Ýîwï Ýrî1ï Ýî”ï Ýqî Zï Ýî!@ï Ýrî"†ï Ýî#çï Ýqî,yï Ýî-ï Ýrî-Àï Ýqî.¨ï Ýî/aï Ýrî4Iï Ýî‘ï 5 î" î'{vî)eïýãTVm$};procedure=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aprocedurenamed"];WriteString[TVToName[tv]];WriteLine[")"];THROUGH[0..depth+1]DOWriteChar[Ascii.SP]ENDLOOP;WriteString["Definedinthemodulenamed"];WriteLine[TVToName[GlobalParent[tv]]];THROUGH[0..depth+1]DOWriteChar[Ascii.SP]ENDLOOP;WriteString["ItsDomain..."];IFDomain[type]=RTTypesBasic.nullTypeTHENWriteLine["novalue"]ELSEIFTypeClass[Domain[type]]=structureTHENWriteLine["astructurevalue"]ELSEERROR;THROUGH[0..depth+1]DOWriteChar[Ascii.SP]ENDLOOP;WriteString["ItsRange..."];IFRange[type]=RTTypesBasic.nullTypeTHENWriteLine["novalue"]ELSEIFTypeClass[Range[type]]=structureTHENWriteLine["astructurevalue"]ELSEERROR;};signal=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(asignalnamed"];WriteString[TVToName[tv]];WriteLine[")"];THROUGH[0..depth+1]DOWriteChar[Ascii.SP]ENDLOOP;WriteString["ItsDomain..."];IFDomain[type]=RTTypesBasic.nullTypeTHENWriteLine["novalue"]ELSEIFTypeClass[Domain[type]]=structureTHENWriteLine["astructurevalue"]ELSEERROR;THROUGH[0..depth+1]DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["ItsRange..."];IFRange[type]=RTTypesBasic.nullTypeTHENWriteLine["novalue"]ELSEIFTypeClass[Range[type]]=structureTHENWriteLine["astructurevalue"]ELSEERROR;};error=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(anerrornamed"];WriteString[TVToName[tv]];WriteLine[")"];THROUGH[0..depth+1]DOWriteChar[Ascii.SP]ENDLOOP;WriteString["ItsDomain..."];IFDomain[type]=RTTypesBasic.nullTypeTHENWriteLine["novalue"]ELSEIFTypeClass[Domain[type]]=structureTHENWriteLine["astructurevalue"]ELSEERROR;};structure=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(astructure)"];FORi:CARDINALIN[1..NComponents[type]]DOTHROUGH[0..depth]DOWriteChar[Ascii.SP]ENDLOOP;WriteString[IndexToName[type,i]];17rî ïb!î€ï`xîî‰ï^Ïqî¾ï^Ïîwï^Ïrî1ï^Ïî”ï^Ïqî Zï^Ïî!@ï^Ïrî"†ï^Ïî#çï^Ïqî,yï^Ïî-ï^Ïrî-Àï^Ïqî.¨ï^Ïî/aï^Ïrî4Iï^Ïî‘ï]'î9î#¼î(Bî‘ï[~î‘ïYÕqî‘ïX-îKïX-rîïX-îhïX-îµî!šqî#2ïX-î$ïX-rî%^ïX-î&¿ïX-qî/QïX-î/ðïX-rî0˜ïX-qî1ïX-î28ïX-rî7 ïX-î‘ïV„î îî"œî$ûî)ûî.‚î‘ïTÛð&qî‘ïQŠîKïQŠrîïQŠîhïQŠîµî!šqî#2ïQŠî$ïQŠrî%^ïQŠî&¿ïQŠqî/QïQŠî/ðïQŠrî0˜ïQŠqî1ïQŠî28ïQŠrî7 ïQŠî‘ïOáî‘ qî‘ïN8îûïN8rîïN8î=ïN8 îÈî­qî.iïN8î/"ïN8rî2ïN8î3uïN8 î;AqîïL�îÏïL�îJrî×ïL�î¾ïL�î(Zî*?qî/üïL�î0µïL�rî3§ïL�î5ïL� î;÷îA´qîïJçîÏïJçîJrî\ïJçqî‘ïI>îKïI>rîïI>îhïI>îµî!šqî#2ïI>î$ïI>rî%^ïI>î&¿ïI>qî/QïI>î/ðïI>rî0˜ïI>qî1ïI>î28ïI>rî7 ïI>î‘ïG–î‘ qî‘ïEíîûïEírîïEíî'ïEí î¿î¤qî-`ïEíî.ïEírî1 ïEíî2lïEí î:8qîïDDîÏïDDîJrî×ïDDî¾ïDDî'Qî)6qî.óïDDî/¬ïDDrî2žïDDî3ÿïDD î:ïî@¬qîïBœîÏïBœîJrî\ïBœî ï@óî€ï?Jîlî‰ï=¢qî¾ï=¢îwï=¢rî1ï=¢î”ï=¢qî Zï=¢î!@ï=¢rî"†ï=¢î#çï=¢qî,yï=¢î-ï=¢rî-Àï=¢qî.¨ï=¢î/aï=¢rî4Iï=¢î‘ï;ùî9î!$î%ªî‘ï:Pî‘ï8¨qî‘ï6ÿîKï6ÿrîï6ÿîhï6ÿîµî!šqî#2ï6ÿî$ï6ÿrî%^ï6ÿî&¿ï6ÿqî/Qï6ÿî/ðï6ÿrî0˜ï6ÿqî1ï6ÿî28ï6ÿrî7 ï6ÿî‘ï5Vî‘ qî‘ï3®îûï3®rîï3®î=ï3® îÈî­qî.iï3®î/"ï3®rî2ï3®î3uï3® î;Aqîï2îÏï2îJrî×ï2î¾ï2î(Zî*?qî/üï2î0µï2rî3§ï2î5ï2 î;÷îA´qîï0\îÏï0\îJrî\ï0\qî‘ï.´îKï.´rîï.´îhï.´îµî!šqî#2ï.´î$ï.´rî%^ï.´î&¿ï.´qî/Qï.´î/ðï.´rî0˜ï.´qî1ï.´î28ï.´rî7 ï.´î‘ï- î´ qî‘ï+bîûï+brîï+bî'ï+b î¿î¤qî-`ï+bî.ï+brî1 ï+bî2lï+b î:8qîï)ºîÏï)ºîJrî×ï)ºî¾ï)ºî'Qî)6qî.óï)ºî/¬ï)ºrî2žï)ºî3ÿï)º î:ïî@¬qîï(îÏï(îJrî\ï(î‰ï&hî€ï$Àîòî‰ï#qî¾ï#îwï#rî1ï#î”ï#qî Zï#î!@ï#rî"†ï#î#çï#qî,yï#î-ï#rî-Àï#qî.¨ï#î/aï#rî4Iï#î‘ï!nîÿî!qî%øî‘ïÆî‘ïqî‘ïtîKïtrîïtîhïtîµî!šqî#2ïtî$ïtrî%^ïtî&¿ïtqî/Qïtî/ðïtrî0˜ïtqî1ïtî28ïtrî7 ïtî‘ïËî‘ qî‘ï#îûï#rîï#î=ï# îÈî­qî.iï#î/"ï#rî2ï#î3uï# î;AqîïzîÏïzîJrî×ïzî¾ïzî(Zî*?qî/üïzî0µïzrî3§ïzî5ïz î;÷îA´qîïÑîÏïÑîJrî\ïÑî‰ï)î€ï€î=î‰ï×qî¾ï×îwï×rî1ï×î”ï×qî Zï×î!@ï×rî"†ï×î#çï×qî,yï×î-ï×rî-Àï×qî.¨ï×î/aï×rî4Iï×î‘ï/ î[ qî‘ï †îKï †rîeï †îÈï †qîÆï †î�ï †îfrî "ï †î †ï †qî.Ìï †î/±ï †rqîšï ÝîSï Ýrîï Ýîqï Ýqî!!ï Ýî"ï Ýrî#Mï Ýî$­ï Ýqî-@ï Ýî-ßï Ýrî.†ï Ýqî/nï Ýî0'ï Ýrî5ï Ýîšï 5î([vî)eïöÿTVm$óWriteLine[":"];PrintTV[IndexToTV[tv,i],depth+2];ENDLOOP;};record=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(arecord)"];FORi:CARDINALIN[1..NComponents[type]]DOTHROUGH[0..depth]DOWriteChar[Ascii.SP]ENDLOOP;WriteString[IndexToName[type,i]];WriteLine[":"];PrintTV[IndexToTV[tv,i],depth+2];ENDLOOP;};ref=>{lc:LONGCARDINAL=TVToLC[tv];THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aref)="];IFlc=0THENWriteString["NIL"]ELSEWriteLongOctal[lc];WriteLine[""];--IFlc#0THENPrintTV[Referent[tv],depth+1];};list=>{lc:LONGCARDINAL=TVToLC[tv];THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(alist)="];IFlc=0THENWriteString["NIL"]ELSEWriteLongOctal[lc];WriteLine[""];IFlc#0THENPrintTV[Referent[tv],depth+1];};pointer=>{lc:LONGCARDINAL=TVToLC[tv];THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aPOINTER)="];IFlc=0THENWriteString["NIL"]ELSEWriteLongOctal[lc];WriteLine[""];};longPointer=>{lc:LONGCARDINAL=TVToLC[tv];THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aLONGPOINTER)="];IFlc=0THENWriteString["NIL"]ELSEWriteLongOctal[lc];WriteLine[""];};character=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aCHAR)='"];WriteChar[TVToCharacter[tv]];WriteLine[""]};cardinal=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aCARDINAL)="];WriteLongOctal[TVToLC[tv]];18rîšïb! î¾îšï`xî#î$Âî(¯î*”qîï^ÏîÏï^Ïrî·ï^Ïî‰ï]'î€ï[~îÐî‰ïYÕqî¾ïYÕîwïYÕrî1ïYÕî”ïYÕqî ZïYÕî!@ïYÕrî"†ïYÕî#çïYÕqî,yïYÕî-ïYÕrî-ÀïYÕqî.¨ïYÕî/aïYÕrî4IïYÕî‘ïX- î[ qî‘ïV„îKïV„rîeïV„îÈïV„qîÆïV„î�ïV„îfrî "ïV„î †ïV„qî.ÌïV„î/±ïV„rqîšïTÛîSïTÛrîïTÛîqïTÛqî!!ïTÛî"ïTÛrî#MïTÛî$­ïTÛqî-@ïTÛî-ßïTÛrî.†ïTÛqî/nïTÛî0'ïTÛrî5ïTÛîšïS3î([îšïQŠ î¾îšïOáî#î$Âî(¯î*”qîïN8îÏïN8rî·ïN8î‰ïL�î€ïJçî¨î‰ïI>î¾qî¹ïI>îrïI>î�rî 0ïI>î"ïI> qî‘ïG–îKïG–rîïG–îhïG–qî .ïG–î!ïG–rî"ZïG–î#»ïG–qî,MïG–î,ìïG–rî-”ïG–qî.|ïG–î/5ïG–rî4ïG–î‘ïEíî9îÙî!¾qî‘ïDDîûïDDrîïDDî�ïDDî¡î†qîºïDDîsïDDrîeïDDîÆïDDqî)�ïDDî*IïDDrî,ÄïDDî.%ïDDî‘ïBœ xîoï@óî„î€îîçîî¸î,¼î0iî2Nrî‰ï?Jî€ï=¢î¾î‰ï;ùî¾qî¹ï;ùîrï;ùî�rî 0ï;ùî"ï;ù qî‘ï:PîKï:Prîï:Pîhï:Pqî .ï:Pî!ï:Prî"Zï:Pî#»ï:Pqî,Mï:Pî,ìï:Prî-”ï:Pqî.|ï:Pî/5ï:Prî4ï:Pî‘ï8¨î9îðî!Õqî‘ï6ÿîûï6ÿrîï6ÿî�ï6ÿî¡î†qîºï6ÿîsï6ÿrîeï6ÿîÆï6ÿqî)�ï6ÿî*Iï6ÿrî,Äï6ÿî.%ï6ÿî‘ï5V qî‘ï3®îûï3®rîï3®î�ï3®î¡î†qîºï3®îsï3®rîeï3®î7ï3®î*Šî.wî0]î‰ï2î€ï0\îIî‰ï.´î¾qî¹ï.´îrï.´î�rî 0ï.´î"ï.´ qî‘ï- îKï- rîï- îhï- qî .ï- î!ï- rî"Zï- î#»ï- qî,Mï- î,ìï- rî-”ï- qî.|ï- î/5ï- rî4ï- î‘ï+bî9î$šî&qî‘ï)ºîûï)ºrîï)ºî�ï)ºî¡î†qîºï)ºîsï)ºrîeï)ºîÆï)ºqî)�ï)ºî*Iï)ºrî,Äï)ºî.%ï)ºî‘ï( î‰ï&hî€ï$À îéî‰ï#î¾qî¹ï#îrï#î�rî 0ï#î"ï# qî‘ï!nîKï!nrîï!nîhï!nqî .ï!nî!ï!nrî"Zï!nî#»ï!nqî,Mï!nî,ìï!nrî-”ï!nqî.|ï!nî/5ï!nrî4ï!nî‘ïÆî9î"î)fî+Kqî‘ïîûïrîïî�ïî¡î†qîºïîsïrîeïîÆïqî)�ïî*Iïrî,Äïî.%ïî‘ït î‰ïËî€ï#îiî‰ïzqî¾ïzîwïzrî1ïzî”ïzqî Zïzî!@ïzrî"†ïzî#çïzqî,yïzî-ïzrî-Àïzqî.¨ïzî/aïzrî4Iïzî‘ïÑî9î"eî$Jî‘ï)î‘ï€ î‰ï×î€ï/îÂî‰ï †qî¾ï †îwï †rî1ï †î”ï †qî Zï †î!@ï †rî"†ï †î#çï †qî,yï †î-ï †rî-Àï †qî.¨ï †î/aï †rî4Iï †î‘ï Ýî9î%ûî'àî‘ï 5vî)eï9TVm$WriteLine[""]};longCardinal=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(aLONGCARDINAL)="];WriteLongOctal[TVToLC[tv]];WriteLine[""]};unspecified=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(anUNSPECIFIED)="];WriteLongOctal[TVToLC[tv]];WriteLine[""]};type=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(ATYPE)"]};integer=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(anINTEGER,writtenasoctal)="];WriteLongOctal[TVToLC[tv]];WriteLine[""]};enumerated=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteString["(anenumerationvalue)="];WriteString[TVToName[tv]];WriteLine[""]};array=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(anarray)"];FORsubscript:TV_First[Domain[type]],Next[subscript]UNTILsubscript=NILDOPrintTV[subscript,depth+1];PrintTV[Apply[tv,subscript],depth+2];ENDLOOP;};sequence=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(asequence).Length="];PrintTV[Length[tv],depth+2];--FORsubscript:TV_First[Domain[type]],Next[subscript]--UNTILTVToLC[subscript]=TVToLC[Length[tv]]DO--PrintTV[subscript,depth+1];--PrintTV[Apply[tv,subscript],depth+2];--ENDLOOP;};subrange=>PrintTV[Coerce[tv,Ground[TVType[tv]]],depth];opaque=>{THROUGH[0..depth)DOWriteChar[Ascii.SP]ENDLOOP;WriteLine["(opaque)"];};ENDCASE=>ERROR;19rî‘ïb! î‰ï`xî€ï^Ï î»î‰ï]%qî¾ï]%îwï]%rî1ï]%î”ï]%qî Zï]%î!@ï]%rî"†ï]%î#çï]%qî,yï]%î-ï]%rî-Àï]%qî.¨ï]%î/aï]%rî4Iï]%î‘ï[|î9î"î*Çî,¬î‘ïYÓî‘ïX* î‰ïV�î€ïTØ îÊî‰ïS/qî¾ïS/îwïS/rî1ïS/î”ïS/qî ZïS/î!@ïS/rî"†ïS/î#çïS/qî,yïS/î-ïS/rî-ÀïS/qî.¨ïS/î/aïS/rî4IïS/î‘ïQ†îÿ î(³î*˜î‘ïOÝî‘ïN4 î‰ïL‹î€ïJâî�î‰ïI9qî¾ïI9îwïI9rî1ïI9î”ïI9qî ZïI9î!@ïI9rî"†ïI9î#çïI9qî,yïI9î-ïI9rî-ÀïI9qî.¨ïI9î/aïI9rî4IïI9î‘ïG� î¾î‰ïEçî€ïD>îî‰ïB•qî¾ïB•îwïB•rî1ïB•î”ïB•qî ZïB•î!@ïB•rî"†ïB•î#çïB•qî,yïB•î-ïB•rî-ÀïB•qî.¨ïB•î/aïB•rî4IïB•î‘ï@ìîÿî%lî*î+Íî/˜î1}î‘ï?Cî‘ï=™ î‰ï;ðî€ï:G î î‰ï8žqî¾ï8žîwï8žrî1ï8žî”ï8žqî Zï8žî!@ï8žrî"†ï8žî#çï8žqî,yï8žî-ï8žrî-Àï8žqî.¨ï8žî/aï8žrî4Iï8žî‘ï6õîÿ î&î*&î, î‘ï5Lî‘ï3£ î‰ï1úî€ï0Qîî‰ï.¨qî¾ï.¨îwï.¨rî1ï.¨î”ï.¨qî Zï.¨î!@ï.¨rî"†ï.¨î#çï.¨qî,yï.¨î-ï.¨rî-Àï.¨qî.¨ï.¨î/aï.¨rî4Iï.¨î‘ï,ÿ î"qî‘ï+VîKï+Vrîeï+Vîéï+Vqî±ï+Vîjï+Vrî ï+Vî –ï+Vî-qî6 ï+Vî7…ï+Vrî:´ï+Vî;8ï+Vî@‡qîBlï+VîCTï+VîDárîšï)­îüî#éî%Îîšï(îÙ î&gî*Uî,:qîï&[îÏï&[rî·ï&[î‰ï$²î€ï# îiî‰ï!`qî¾ï!`îwï!`rî1ï!`î”ï!`qî Zï!`î!@ï!`rî"†ï!`î#çï!`qî,yï!`î-ï!`rî-Àï!`qî.¨ï!`î/aï!`rî4Iï!`î‘ï· î[ î#î'Òî)·î‘ïîÄî#±î%–xîoïdî„îö î î úî"gî.Áîoï»î•î¶î'�î)‚î6aîoïî�î Òî$î&dîoïiî�î š î&ýî*ªî,�îoïÀîrî‰ïî€ïnî]îòî%«î3=î€ïÅî`î‰ïqî¾ïîwïrî1ïî”ïqî Zïî!@ïrî"†ïî#çïqî,yïî-ïrî-Àïqî.¨ïî/aïrî4Iïî‘ï sî‰ï Êqîüï !îµï !rîäï !îEï !qîyï !î2ï !rî‹ï !vî)eïTVm$QEND;20qîoïbfrî÷ïbfvî)eïýTVm$  HELVETICAþŸ GACHAþŸ  TIMESROMANþŸ TIMESROMANþŸ HELVETICAþæ HELVETICAþŸ HELVETICAþæ HELVETICAþŸLOGOü´ TIMESROMANþŸ TIMESROMANþæ TIMESROMANþY – OE„½%+@2 ä;gBH ÞQ ³Z:b Õk0r y ‹‚D‰!�ä�j/“‘™Ó6Sÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ RTTypes.tioga12-Oct-82 13:40:51