home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / MacHaskell 2.2 / doc / dynamic / dynamic.ps next >
Encoding:
Text File  |  1994-09-27  |  140.2 KB  |  1,501 lines  |  [TEXT/ttxt]

  1. %!PS-Adobe-2.0
  2. %%Creator: dvips, version 5.4 (C) 1986-90 Radical Eye Software
  3. %%Title: dynamic.dvi
  4. %%Pages: 14 1
  5. %%BoundingBox: 0 0 612 792
  6. %%EndComments
  7. %%BeginProcSet: tex.pro
  8. /TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
  9. load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
  10. isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
  11. Resolution VResolution vsize neg mul TR}B /@letter{/vsize 10 N}B /@landscape{
  12. /isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{/vsize 15.5531 N
  13. }B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{statusdict
  14. /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0
  15. ]N /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0
  16. ]N df-tail}B /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N
  17. /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N
  18. /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[
  19. }B /E{pop nn dup definefont setfont}B /ch-image{ch-data dup type /stringtype
  20. ne{ctr get /ctr ctr 1 add N}if}B /ch-width{ch-data dup length 5 sub get}B
  21. /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup length 3
  22. sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data
  23. dup length 1 sub get}B /ctr 0 N /CharBuilder{save 3 1 roll S dup /base get 2
  24. index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff
  25. ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height
  26. true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{
  27. /cc X dup type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S
  28. ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr
  29. ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI
  30. save N @rigin 0 0 moveto}B /eop{clear SI restore showpage userdict /eop-hook
  31. known{eop-hook}if}B /@start{userdict /start-hook known{start-hook}if
  32. /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1
  33. string dup 0 3 index put cvn put}for}B /p /show load N /RMat[1 0 0 -1 0 0]N
  34. /BDot 8 string N /v{/ruley X /rulex X V}B /V{gsave TR -.1 -.1 TR rulex ruley
  35. scale 1 1 false RMat{BDot}imagemask grestore}B /a{moveto}B /delta 0 N /tail{
  36. dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}B /d{
  37. -3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /l{p
  38. -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t
  39. {p 4 w}B /w{0 rmoveto}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B
  40. /eos{clear SS restore}B end
  41. %%EndProcSet
  42. TeXDict begin 1000 300 300 @start /Fa 1 16 df<03C00FF01FF83FFC7FFE7FFEFFFFFFFF
  43. FFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003C010127D9317>15 D E /Fb
  44. 38 122 df<0E1F3F3F1D0102020404081020C0080E779F0E>39 D<7FF0FFE07FE00C037D8A10>
  45. 45 D<000200020006000E003C00DC031C001C0038003800380038007000700070007000E000E0
  46. 00E000E001C001C001C001C003800380038003800780FFF80F1E7B9D17>49
  47. D<001F800060E00080700100300200380420380420380410380420700460700380600000E00001
  48. C000030000FE00001C00000600000700000780000780000780300780780780780780F00F00800F
  49. 00401E00401C0040380020E0001F8000151F7C9D17>51 D<001F0000718000C0C00180C00380E0
  50. 0700E00F00E00F01E01E01E01E01E01E01E01E01C01C03C01C03C01C03C01C07C01C0F800C0F80
  51. 06378003C700000F00000E00000E00001C00601C00F03800F07000E0600080C0004380003E0000
  52. 131F7B9D17>57 D<00000200000006000000060000000E0000001E0000001E0000003F0000002F
  53. 0000004F0000004F0000008F0000010F0000010F0000020F0000020F0000040F00000C0F000008
  54. 0F0000100F0000100F0000200F80003FFF800040078000C0078000800780010007800100078002
  55. 00078002000780060007801E000F80FF807FF81D207E9F22>65 D<0000FE0200078186001C004C
  56. 0038003C0060003C00C0001C01C0001803800018070000180F0000181E0000101E0000103C0000
  57. 003C00000078000000780000007800000078000000F0000000F0000000F0000000F0000000F000
  58. 00807000008070000080700001003800010038000200180004000C001800060020000381C00000
  59. FE00001F217A9F21>67 D<01FFFF80001E00E0001E0070001E0038001E001C003C001C003C000E
  60. 003C000E003C000E0078000E0078000E0078000E0078000E00F0001E00F0001E00F0001E00F000
  61. 1E01E0003C01E0003C01E0003C01E0007803C0007003C0007003C000E003C001C0078001C00780
  62. 038007800E0007801C000F007000FFFFC0001F1F7D9E22>I<01FFFFFC001E0038001E0018001E
  63. 0008001E0008003C0008003C0008003C0008003C00080078001000780800007808000078080000
  64. F0100000F0300000FFF00000F0300001E0200001E0200001E0200001E0200003C0000003C00000
  65. 03C0000003C00000078000000780000007800000078000000F800000FFF800001E1F7D9E1E>70
  66. D<0000FC040007030C001C00980030007800E0007801C000380380003003800030070000300E00
  67. 00301E0000201E0000203C0000003C00000078000000780000007800000078000000F0000000F0
  68. 00FFF0F0000780F0000780F0000F0070000F0070000F0070000F0070001E0038001E0018003E00
  69. 1C002E000E00CC000383040000FC00001E217A9F23>I<01FFF0001F00001E00001E00001E0000
  70. 3C00003C00003C00003C0000780000780000780000780000F00000F00000F00000F00001E00001
  71. E00001E00001E00003C00003C00003C00003C0000780000780000780000780000F8000FFF80014
  72. 1F7D9E12>73 D<01FFF800001F0000001E0000001E0000001E0000003C0000003C0000003C0000
  73. 003C00000078000000780000007800000078000000F0000000F0000000F0000000F0000001E000
  74. 0001E0000001E0000001E0008003C0010003C0010003C0030003C0020007800600078006000780
  75. 0C0007801C000F007800FFFFF800191F7D9E1D>76 D<01FE00007FC0001E0000FC00001E0000F8
  76. 0000170001780000170001780000270002F00000270004F00000270004F00000270008F0000047
  77. 0009E00000470011E00000470021E00000470021E00000870043C00000838043C00000838083C0
  78. 0000838083C0000103810780000103820780000103820780000103840780000203840F00000203
  79. 880F00000203900F00000203900F00000401E01E00000401E01E00000401C01E00000C01801E00
  80. 001C01803E0000FF8103FFC0002A1F7D9E29>I<01FF007FE0001F000F00001F00040000178004
  81. 00001780040000278008000023C008000023C008000023C008000041E010000041E010000041F0
  82. 10000040F010000080F0200000807820000080782000008078200001003C400001003C40000100
  83. 3C400001001E400002001E800002001E800002000F800002000F800004000F0000040007000004
  84. 000700000C000700001C00020000FF80020000231F7D9E22>I<01FFFF80001E00E0001E007000
  85. 1E0038001E003C003C003C003C003C003C003C003C003C0078007800780078007800F0007800E0
  86. 00F003C000F00F0000FFFC0000F0000001E0000001E0000001E0000001E0000003C0000003C000
  87. 0003C0000003C00000078000000780000007800000078000000F800000FFF000001E1F7D9E1F>
  88. 80 D<01FFFF00001E03C0001E00E0001E0070001E0078003C0078003C0078003C0078003C0078
  89. 007800F0007800F0007801E0007801C000F0070000F01E0000FFF00000F0380001E01C0001E01E
  90. 0001E00E0001E00F0003C01E0003C01E0003C01E0003C01E0007803C0007803C0807803C080780
  91. 3C100F801C10FFF00C20000007C01D207D9E21>82 D<0007E040001C18C0003005800060038000
  92. C0038001C00180018001000380010003800100038001000380000003C0000003C0000003F80000
  93. 01FF800001FFE000007FF000001FF0000001F80000007800000078000000380000003800200038
  94. 00200038002000300060007000600060006000E0007000C000E8038000C606000081F800001A21
  95. 7D9F1A>I<0FFFFFF01E0780E0180780201007802020078020200F0020600F0020400F0020400F
  96. 0020801E0040001E0000001E0000001E0000003C0000003C0000003C0000003C00000078000000
  97. 780000007800000078000000F0000000F0000000F0000000F0000001E0000001E0000001E00000
  98. 01E0000003E00000FFFF00001C1F789E21>I<00F1800389C00707800E03801C03803C03803807
  99. 00780700780700780700F00E00F00E00F00E00F00E20F01C40F01C40703C40705C40308C800F07
  100. 0013147C9317>97 D<007E0001C1000300800E07801E07801C07003C0200780000780000780000
  101. F00000F00000F00000F00000F0000070010070020030040018380007C00011147C9315>99
  102. D<0000780003F80000700000700000700000700000E00000E00000E00000E00001C00001C000F1
  103. C00389C00707800E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E
  104. 20F01C40F01C40703C40705C40308C800F070015207C9F17>I<007C01C207010E011C013C0138
  105. 02780C7BF07C00F000F000F000F0007000700170023804183807C010147C9315>I<0000780001
  106. 9C00033C00033C000718000700000700000E00000E00000E00000E00000E0001FFE0001C00001C
  107. 00001C00001C000038000038000038000038000038000070000070000070000070000070000070
  108. 0000E00000E00000E00000E00000C00001C00001C0000180003180007B0000F300006600003C00
  109. 001629829F0E>I<003C6000E27001C1E00380E00700E00F00E00E01C01E01C01E01C01E01C03C
  110. 03803C03803C03803C03803C07003C07001C0F001C17000C2E0003CE00000E00000E00001C0000
  111. 1C00301C00783800F0700060E0003F8000141D7E9315>I<01E0000FE00001C00001C00001C000
  112. 01C000038000038000038000038000070000070000071E000763000E81800F01C00E01C00E01C0
  113. 1C03801C03801C03801C0380380700380700380700380E10700E20700C20701C20700C40E00CC0
  114. 60070014207D9F17>I<00C001E001E001C000000000000000000000000000000E003300230043
  115. 804300470087000E000E000E001C001C001C003840388030807080310033001C000B1F7C9E0E>
  116. I<03C01FC0038003800380038007000700070007000E000E000E000E001C001C001C001C003800
  117. 3800380038007000700070007100E200E200E200E200640038000A207C9F0C>108
  118. D<1C0F80F0002630C318004740640C004780680E004700700E004700700E008E00E01C000E00E0
  119. 1C000E00E01C000E00E01C001C01C038001C01C038001C01C038001C01C0708038038071003803
  120. 806100380380E10038038062007007006600300300380021147C9325>I<1C0F802630C0474060
  121. 4780604700704700708E00E00E00E00E00E00E00E01C01C01C01C01C01C01C0384380388380308
  122. 3807083803107003303001C016147C931A>I<007C0001C3000301800E01C01E01C01C01E03C01
  123. E07801E07801E07801E0F003C0F003C0F003C0F00780F00700700F00700E0030180018700007C0
  124. 0013147C9317>I<01C1E002621804741C04781C04701E04701E08E01E00E01E00E01E00E01E01
  125. C03C01C03C01C03C01C0380380780380700380E003C1C0072380071E000700000700000E00000E
  126. 00000E00000E00001C00001C0000FFC000171D809317>I<1C1E00266100478380478780470780
  127. 4703008E00000E00000E00000E00001C00001C00001C00001C0000380000380000380000380000
  128. 70000030000011147C9313>114 D<00FC030206010C030C070C060C000F800FF007F803FC003E
  129. 000E700EF00CF00CE008401020601F8010147D9313>I<018001C0038003800380038007000700
  130. FFF007000E000E000E000E001C001C001C001C003800380038003820704070407080708031001E
  131. 000C1C7C9B0F>I<0E00C03300E02301C04381C04301C04701C08703800E03800E03800E03801C
  132. 07001C07001C07001C07101C0E20180E20180E201C1E200C264007C38014147C9318>I<0E0380
  133. 3307802307C04383C04301C04700C08700800E00800E00800E00801C01001C01001C01001C0200
  134. 1C02001C04001C04001C08000E300003C00012147C9315>I<0383800CC4401068E01071E02071
  135. E02070C040E00000E00000E00000E00001C00001C00001C00001C040638080F38080F38100E581
  136. 0084C60078780013147D9315>120 D<0E00C03300E02301C04381C04301C04701C08703800E03
  137. 800E03800E03801C07001C07001C07001C07001C0E00180E00180E001C1E000C3C0007DC00001C
  138. 00001C00003800F03800F07000E06000C0C0004380003E0000131D7C9316>I
  139. E /Fc 61 125 df<4010E038F078E038E038E038E038E038E038E038E038E038E03860300D0E7B
  140. 9C18>34 D<01C00007E0000FF0000E70001C38001C38001C38001C38001C73F01C73F01CE3F00F
  141. E3800FC7000F87000F07001F0E003F0E007B8E0073DC00E1DC00E0F800E0F800E07070E0787070
  142. FC707FFFE03FCFE00F03C0141C7F9B18>38 D<387C7C7E3E0E0E0E1C1C38F8F0C0070E789B18>
  143. I<007000F001E003C007800F001E001C00380038007000700070007000E000E000E000E000E000
  144. E000E000E0007000700070007000380038001C001E000F00078003C001F000F000700C24799F18
  145. >I<6000F00078003C001E000F000780038001C001C000E000E000E000E0007000700070007000
  146. 7000700070007000E000E000E000E001C001C0038007800F001E003C007800F00060000C247C9F
  147. 18>I<00600000F00000F00000F00000F00000F00000F00000F0007FFFC0FFFFE0FFFFE07FFFC0
  148. 00F00000F00000F00000F00000F00000F00000F00000600013147E9718>43
  149. D<1C3E7E7F3F1F070E1E7CF860080C788518>I<7FFF00FFFF80FFFF807FFF0011047D8F18>I<30
  150. 78FCFC78300606778518>I<01800380038007800F803F80FF80FB804380038003800380038003
  151. 80038003800380038003800380038003800380038003807FFCFFFE7FFC0F1C7B9B18>49
  152. D<03F0000FFE003FFF007C0F807003C0E001C0F000E0F000E06000E00000E00000E00001C00001
  153. C00003C0000780000F00001E00003C0000780000F00001E00007C0000F80001E00E03C00E07FFF
  154. E0FFFFE07FFFE0131C7E9B18>I<3078FCFC783000000000000000003078FCFC78300614779318>
  155. 58 D<000300000780001F80003F00007E0001FC0003F00007E0001FC0003F00007E0000FC0000
  156. FC00007E00003F00001FC00007E00003F00001FC00007E00003F00001F8000078000030011187D
  157. 9918>60 D<7FFFC0FFFFE0FFFFE0FFFFE0000000000000000000000000FFFFE0FFFFE0FFFFE07F
  158. FFC0130C7E9318>I<600000F00000FC00007E00003F00001FC00007E00003F00001FC00007E00
  159. 003F00001F80001F80003F00007E0001FC0003F00007E0001FC0003F00007E0000FC0000F00000
  160. 60000011187D9918>I<00700000F80000F80000D80000D80001DC0001DC0001DC00018C00038E
  161. 00038E00038E00038E000306000707000707000707000707000FFF800FFF800FFF800E03800E03
  162. 801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>65 D<FFFC00FFFF00FFFF801C03C01C01C0
  163. 1C00E01C00E01C00E01C00E01C01E01C01C01C07C01FFF801FFF001FFFC01C03C01C00E01C00F0
  164. 1C00701C00701C00701C00701C00F01C00E01C03E0FFFFC0FFFF80FFFE00141C7F9B18>I<00F8
  165. E003FEE007FFE00F07E01E03E03C01E03800E07000E07000E0700000E00000E00000E00000E000
  166. 00E00000E00000E00000E000007000007000E07000E03800E03C00E01E01C00F07C007FF8003FE
  167. 0000F800131C7E9B18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E01C00E01C
  168. 00F01C00701C00701C00701C00701C00701C00701C00701C00701C00F01C00E01C00E01C01E01C
  169. 01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>I<FFFFF0FFFFF0FFFFF01C00701C0070
  170. 1C00701C00701C00001C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E001C0E001C0E00
  171. 1C00001C00001C00381C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8151C7F9B18>I<FFFF
  172. E0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C00001C1C001C1C001C1C001FFC001FFC
  173. 001FFC001C1C001C1C001C1C001C00001C00001C00001C00001C00001C00001C0000FFC000FFC0
  174. 00FFC000131C7E9B18>I<01F1C003FDC00FFFC01F0FC01C03C03803C03801C07001C07001C070
  175. 0000E00000E00000E00000E00000E00000E00FF0E01FF0E00FF07001C07001C07003C03803C038
  176. 03C01C07C01F0FC00FFFC003FDC001F1C0141C7E9B18>I<7FFF00FFFF807FFF0001C00001C000
  177. 01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
  178. 01C00001C00001C00001C00001C00001C00001C0007FFF00FFFF807FFF00111C7D9B18>73
  179. D<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
  180. 000E00000E00000E00000E00000E00000E00000E00000E00700E00700E00700E00700E00707FFF
  181. F0FFFFF07FFFF0141C7F9B18>76 D<FC01F8FE03F8FE03F83B06E03B06E03B06E03B06E03B8EE0
  182. 3B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038F8E03870E03870E03800E03800E0
  183. 3800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B18>I<7E07F0FF0FF87F07F01D81
  184. C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C01C39
  185. C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18
  186. >I<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E00380E0
  187. 0380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780700700780F007F
  188. FF003FFE000FF800111C7D9B18>I<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C0
  189. 1C01C01C03C01C03801C0F801FFF001FFE001FFE001C0F001C07001C03801C03801C03801C0380
  190. 1C03801C039C1C039C1C039C7F01F8FF81F87F00F0161C7F9B18>82 D<03F3801FFF803FFF807C
  191. 0F80700780E00380E00380E00380E000007000007800003F00001FF00007FE0000FF00000F8000
  192. 03C00001C00000E00000E06000E0E000E0E001E0F001C0F80780FFFF80FFFE00E7F800131C7E9B
  193. 18>I<7FFFF8FFFFF8FFFFF8E07038E07038E07038E07038007000007000007000007000007000
  194. 007000007000007000007000007000007000007000007000007000007000007000007000007000
  195. 07FF0007FF0007FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C00701C00701C00701C00701C00
  196. 701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00
  197. 701C00700E00E00F01E00783C003FF8001FF00007C00171C809B18>I<FF07F8FF07F8FF07F81C
  198. 01C01C01C01C01C01C01C00E03800E03800E03800E03800F078007070007070007070007070003
  199. 8E00038E00038E00038E00018C0001DC0001DC0001DC0000D80000F80000F800007000151C7F9B
  200. 18>I<FFF8FFF8FFF8E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
  201. E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000FFF8FFF8FFF80D2477
  202. 9F18>91 D<600000F00000F00000F800007800007C00003C00003C00003E00001E00001F00000F
  203. 00000F00000F800007800007C00003C00003C00003E00001E00001F00000F00000F80000780000
  204. 7800007C00003C00003E00001E00001E00001F00000F00000F8000078000078000030011247D9F
  205. 18>I<FFF8FFF8FFF8003800380038003800380038003800380038003800380038003800380038
  206. 003800380038003800380038003800380038003800380038003800380038FFF8FFF8FFF80D247F
  207. 9F18>I<7FFF00FFFF80FFFF807FFF0011047D7F18>95 D<1FE0003FF8007FFC00781E00300E00
  208. 00070000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00781F003FFFF0
  209. 1FFBF007E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E00000E00000E
  210. 3E000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E00380F
  211. 00700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>I<01FE0007FF001FFF803E0780
  212. 380300700000700000E00000E00000E00000E00000E00000E000007000007001C03801C03E03C0
  213. 1FFF8007FF0001FC0012147D9318>I<001F80003F80001F800003800003800003800003800003
  214. 8003E3800FFB801FFF803C1F80380F80700780700380E00380E00380E00380E00380E00380E003
  215. 80700780700780380F803C1F801FFFF00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E
  216. 0F00380780700380700380E001C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E
  217. 03C01FFF8007FF0001FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C000
  218. 01C0007FFFC0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C000
  219. 01C00001C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80FFF
  220. F81E1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E0003800
  221. 001C00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800F07E03F01FFF
  222. C00FFF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E00000E00000E00000E
  223. 3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E
  224. 00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B18>I<03800007C00007C00007C000
  225. 0380000000000000000000000000007FC000FFC0007FC00001C00001C00001C00001C00001C000
  226. 01C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF00FFFF80FFFF00111D7C
  227. 9C18>I<FE0000FE0000FE00000E00000E00000E00000E00000E00000E3FF00E7FF00E3FF00E07
  228. 800E0F000E1E000E3C000E78000EF0000FF8000FFC000F9C000F0E000E0F000E07000E03800E03
  229. C0FFC7F8FFC7F8FFC7F8151C7F9B18>107 D<7FE000FFE0007FE00000E00000E00000E00000E0
  230. 0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
  231. 0000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>I<7CE0E000FFFBF8
  232. 007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C
  233. 1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF807F1F1F001914819318
  234. >I<7E3E00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E
  235. 00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC1714809318>I<01F0000FFE001FFF00
  236. 3E0F803803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C0780
  237. 3E0F801FFF000FFE0001F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80E00F00700E00
  238. 700E00380E00380E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF800E3E
  239. 000E00000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E809318>I<01
  240. E38007FB801FFF803E1F80380F80700780700780E00380E00380E00380E00380E00380E0038070
  241. 0780700780380F803C1F801FFF800FFB8003E38000038000038000038000038000038000038000
  242. 0380003FF8003FF8003FF8151E7E9318>I<7F87E0FF9FF07FBFF803F87803F03003E00003C000
  243. 03C0000380000380000380000380000380000380000380000380000380007FFE00FFFF007FFE00
  244. 15147F9318>I<07F7003FFF007FFF00780F00E00700E00700E007007C00007FE0001FFC0003FE
  245. 00001F00600780E00380E00380F00380F80F00FFFF00FFFC00E7F00011147D9318>I<01800003
  246. 80000380000380000380007FFFC0FFFFC0FFFFC003800003800003800003800003800003800003
  247. 80000380000380000380400380E00380E00380E001C1C001FFC000FF80003E0013197F9818>I<
  248. 7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
  249. 0E00E00E00E00E01E00F03E007FFFC03FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8FF01E03
  250. C00E03800E03800E0380070700070700070700038E00038E00038E00038E0001DC0001DC0001DC
  251. 0000F80000F80000700015147F9318>I<FF8FF8FF8FF8FF8FF83800E03800E03800E01C01C01C
  252. 01C01C71C01CF9C01CF9C01CD9C01CD9C00DDD800DDD800DDD800D8D800F8F800F8F8007070015
  253. 147F9318>I<7F8FF07F9FF07F8FF0070700078E00039E0001DC0001F80000F80000700000F000
  254. 00F80001DC00039E00038E000707000F07807F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF8F
  255. F87F8FF00E01C00E03800E0380070380070700070700038700038600038E0001CE0001CE0000CC
  256. 0000CC0000DC0000780000780000780000700000700000700000F00000E00079E0007BC0007F80
  257. 003F00001E0000151E7F9318>I<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
  258. F0F0F0F0F0F0F0F0F0F0600424769F18>124 D E /Fd 24 122 df<387CFEFEFE7C3807077C86
  259. 0F>46 D<0000E000000000E000000001F000000001F000000001F000000003F800000003F80000
  260. 0006FC00000006FC0000000EFE0000000C7E0000000C7E000000183F000000183F000000303F80
  261. 0000301F800000701FC00000600FC00000600FC00000C007E00000FFFFE00001FFFFF000018003
  262. F000018003F000030001F800030001F800060001FC00060000FC000E0000FE00FFE00FFFE0FFE0
  263. 0FFFE0231F7E9E28>65 D<FFFF8000FFFF800007E0000007E0000007E0000007E0000007E00000
  264. 07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000
  265. 0007E0000007E0000007E000C007E000C007E000C007E001C007E001C007E001C007E0038007E0
  266. 038007E00F8007E01F80FFFFFF80FFFFFF801A1F7E9E1F>76 D<7FFFFFFC7FFFFFFC7C07E07C70
  267. 07E01C6007E00C6007E00CE007E00EC007E006C007E006C007E006C007E0060007E0000007E000
  268. 0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0
  269. 000007E0000007E0000007E0000007E0000007E00003FFFFC003FFFFC01F1E7E9D24>84
  270. D<07FC001FFF003F0F803F07C03F03E03F03E00C03E00003E0007FE007FBE01F03E03C03E07C03
  271. E0F803E0F803E0F803E0FC05E07E0DE03FF8FE0FE07E17147F9319>97 D<01FE0007FF801F0FC0
  272. 3E0FC03E0FC07C0FC07C0300FC0000FC0000FC0000FC0000FC0000FC00007C00007E00003E0060
  273. 3F00C01F81C007FF0001FC0013147E9317>99 D<0007F80007F80000F80000F80000F80000F800
  274. 00F80000F80000F80000F80000F80000F801F8F80FFEF81F83F83E01F87E00F87C00F87C00F8FC
  275. 00F8FC00F8FC00F8FC00F8FC00F8FC00F87C00F87C00F87E00F83E01F81F07F80FFEFF03F8FF18
  276. 207E9F1D>FFFF027297DA82D>I<FFFF
  277. F01FFFFEFFFFF01FFFFEFFFFF01FFFFE03FC00007F8003FC00007F8003FC00007F8003FC00007F
  278. 8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC
  279. 00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FFFFFFFF8003FFFFFFFF
  280. 8003FFFFFFFF8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC
  281. 00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F
  282. 8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F80FFFFF01FFFFEFFFF
  283. F01FFFFEFFFFF01FFFFE2F297DA836>72 D<FFFFFCFFFFFCFFFFFC01FE0001FE0001FE0001FE00
  284. 01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00
  285. 01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00
  286. 01FE0001FE0001FE0001FE0001FE00FFFFFCFFFFFCFFFFFC16297EA81A>I<FFFE0000001FFFC0
  287. FFFE0000001FFFC0FFFF0000003FFFC003FF0000003FF00003FF0000003FF00003BF80000077F0
  288. 0003BF80000077F000039FC00000E7F000039FC00000E7F000038FE00001C7F000038FE00001C7
  289. F0000387F0000387F0000387F0000387F0000387F0000387F0000383F8000707F0000383F80007
  290. 07F0000381FC000E07F0000381FC000E07F0000380FE001C07F0000380FE001C07F0000380FF00
  291. 3807F00003807F003807F00003807F003807F00003803F807007F00003803F807007F00003801F
  292. C0E007F00003801FC0E007F00003800FE1C007F00003800FE1C007F00003800FE1C007F0000380
  293. 07F38007F000038007F38007F000038003FF0007F000038003FF0007F000038001FE0007F00003
  294. 8001FE0007F000038000FC0007F000038000FC0007F000FFFE00FC01FFFFC0FFFE007801FFFFC0
  295. FFFE007801FFFFC03A297DA841>77 D<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FC007FE0
  296. 0003FC000FF00003FC0007F80003FC0007FC0003FC0003FC0003FC0003FE0003FC0003FE0003FC
  297. 0003FE0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FC0003FC0007F80003FC0007F8
  298. 0003FC001FE00003FC007FC00003FFFFFE000003FFFFF0000003FC00FC000003FC007F000003FC
  299. 003F800003FC003F800003FC001FC00003FC001FE00003FC001FE00003FC001FE00003FC001FE0
  300. 0003FC001FE00003FC001FF00003FC001FF00003FC001FF00003FC001FF00703FC001FF80703FC
  301. 000FF80703FC0007F80EFFFFF003FE1CFFFFF001FFF8FFFFF0003FF030297DA834>82
  302. D<007F806003FFF0E007FFF9E00F807FE01F001FE03E0007E07C0003E07C0001E0FC0001E0FC00
  303. 01E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFE00007FFFE0003FFFFC001FFFFE000F
  304. FFFF8007FFFFC003FFFFE000FFFFE00007FFF000007FF000000FF8000007F8000003F8600001F8
  305. E00001F8E00001F8E00001F8F00001F0F00001F0F80003F0FC0003E0FF0007C0FFE01F80F3FFFF
  306. 00E0FFFE00C01FF0001D297CA826>I<7FFFFFFFFFC07FFFFFFFFFC07FFFFFFFFFC07F803FC03F
  307. C07E003FC007C078003FC003C078003FC003C070003FC001C0F0003FC001E0F0003FC001E0E000
  308. 3FC000E0E0003FC000E0E0003FC000E0E0003FC000E0E0003FC000E000003FC0000000003FC000
  309. 0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000
  310. 3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000
  311. 0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000
  312. 3FC00000007FFFFFE000007FFFFFE000007FFFFFE0002B287EA730>I<FFFFF0003FFF80FFFFF0
  313. 003FFF80FFFFF0003FFF8003FE000001E00001FE000001C00001FF000003C00000FF0000038000
  314. 00FF0000038000007F8000070000007F8000070000007FC0000F0000003FC0000E0000003FE000
  315. 1E0000001FE0001C0000001FF0001C0000000FF000380000000FF0003800000007F80070000000
  316. 07F8007000000007FC00F000000003FC00E000000003FE01E000000001FE01C000000001FF01C0
  317. 00000000FF038000000000FF038000000000FF8780000000007F8700000000007FCF0000000000
  318. 3FCE00000000003FFE00000000001FFC00000000001FFC00000000000FF800000000000FF80000
  319. 0000000FF8000000000007F0000000000007F0000000000003E0000000000003E0000000000001
  320. C000000031297FA834>86 D<01FF800007FFF0000F81F8001FC07E001FC07E001FC03F000F803F
  321. 8007003F8000003F8000003F8000003F80000FFF8000FFFF8007FC3F800FE03F803F803F803F00
  322. 3F807F003F80FE003F80FE003F80FE003F80FE003F807E007F807F00DF803F839FFC0FFF0FFC01
  323. FC03FC1E1B7E9A21>97 D<001FF80000FFFE0003F01F0007E03F800FC03F801F803F803F801F00
  324. 7F800E007F0000007F000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
  325. 007F0000007F0000007F8000003F8001C01F8001C00FC0038007E0070003F01E0000FFFC00001F
  326. E0001A1B7E9A1F>99 D<00003FF80000003FF80000003FF800000003F800000003F800000003F8
  327. 00000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003
  328. F800000003F800001FE3F80000FFFBF80003F03FF80007E00FF8000FC007F8001F8003F8003F80
  329. 03F8007F0003F8007F0003F8007F0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF
  330. 0003F800FF0003F800FF0003F8007F0003F8007F0003F8007F0003F8003F8003F8001F8003F800
  331. 0F8007F80007C00FF80003F03BFF8000FFF3FF80003FC3FF80212A7EA926>I<003FE00001FFF8
  332. 0003F07E0007C01F000F801F801F800F803F800FC07F000FC07F0007C07F0007E0FF0007E0FF00
  333. 07E0FFFFFFE0FFFFFFE0FF000000FF000000FF0000007F0000007F0000007F0000003F8000E01F
  334. 8000E00FC001C007E0038003F81F0000FFFE00001FF0001B1B7E9A20>I<0007F0003FFC00FE3E
  335. 01F87F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007F000FFFFC0
  336. FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000
  337. 07F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF807FFF807FFF80
  338. 182A7EA915>I<00FF81F003FFE7F80FC1FE7C1F80FC7C1F007C383F007E107F007F007F007F00
  339. 7F007F007F007F007F007F007F007F003F007E001F007C001F80FC000FC1F8001FFFE00018FF80
  340. 0038000000380000003C0000003E0000003FFFF8001FFFFF001FFFFF800FFFFFC007FFFFE01FFF
  341. FFF03E0007F07C0001F8F80000F8F80000F8F80000F8F80000F87C0001F03C0001E01F0007C00F
  342. C01F8003FFFE00007FF0001E287E9A22>I<FFE0000000FFE0000000FFE00000000FE00000000F
  343. E00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000000
  344. 0FE00000000FE00000000FE00000000FE07F00000FE1FFC0000FE787E0000FEE03F0000FF803F0
  345. 000FF803F8000FF003F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
  346. F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
  347. 03F8000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80212A7DA926>
  348. I<07000F801FC03FE03FE03FE01FC00F8007000000000000000000000000000000FFE0FFE0FFE0
  349. 0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
  350. E00FE0FFFEFFFEFFFE0F2B7DAA14>I<FFE00000FFE00000FFE000000FE000000FE000000FE000
  351. 000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0
  352. 1FFC0FE01FFC0FE01FFC0FE007800FE00F000FE01E000FE03C000FE078000FE0E0000FE3C0000F
  353. E7C0000FEFE0000FFFE0000FFFF0000FF3F8000FE3F8000FC1FC000FC0FE000FC07F000FC07F00
  354. 0FC03F800FC01FC00FC00FC00FC00FE0FFFC3FFEFFFC3FFEFFFC3FFE1F2A7EA924>107
  355. D<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
  356. 0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
  357. E0FFFEFFFEFFFE0F2A7DA914>I<FFC07F800FF000FFC1FFE03FFC00FFC383F0707E000FC603F8
  358. C07F000FCC01F9803F000FD801FF003F800FF001FE003F800FF001FE003F800FE001FC003F800F
  359. E001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC00
  360. 3F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE0
  361. 01FC003F800FE001FC003F800FE001FC003F800FE001FC003F80FFFE1FFFC3FFF8FFFE1FFFC3FF
  362. F8FFFE1FFFC3FFF8351B7D9A3A>I<FFC07F0000FFC1FFC000FFC787E0000FCE03F0000FD803F0
  363. 000FD803F8000FF003F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
  364. F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
  365. 03F8000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80211B7D9A26>
  366. I<003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007E07F0007F07F0007F07F00
  367. 07F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F87F0007F07F
  368. 0007F03F800FE03F800FE01F800FC00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>I<FF
  369. E1FE0000FFE7FF8000FFFE07E0000FF803F0000FF001F8000FE000FC000FE000FE000FE000FF00
  370. 0FE0007F000FE0007F000FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F
  371. 800FE0007F800FE0007F000FE000FF000FE000FF000FE000FE000FE001FC000FF001F8000FF803
  372. F0000FFE0FE0000FE7FF80000FE1FC00000FE00000000FE00000000FE00000000FE00000000FE0
  373. 0000000FE00000000FE00000000FE00000000FE0000000FFFE000000FFFE000000FFFE00000021
  374. 277E9A26>I<FFC1F0FFC7FCFFCE3E0FD87F0FD87F0FF07F0FF03E0FF01C0FE0000FE0000FE000
  375. 0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000
  376. FFFF00FFFF00FFFF00181B7E9A1C>114 D<03FE300FFFF01E03F03800F0700070F00070F00070
  377. F80070FC0000FFE0007FFE007FFF803FFFE01FFFF007FFF800FFF80003FC0000FC60007CE0003C
  378. F0003CF00038F80038FC0070FF01E0F7FFC0C1FF00161B7E9A1B>I<0070000070000070000070
  379. 0000F00000F00000F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F0
  380. 0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F03807F03807F0
  381. 3807F03807F03807F03803F03803F87001F86000FFC0001F8015267FA51B>I<FFE03FF800FFE0
  382. 3FF800FFE03FF8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
  383. E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800
  384. 0FE003F8000FE003F8000FE003F8000FE003F8000FE007F80007E007F80007E00FF80003F03BFF
  385. 8001FFF3FF80003FC3FF80211B7D9A26>I<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007
  386. F000700007F800F00003F800E00003FC01E00001FC01C00001FC01C00000FE03800000FE038000
  387. 007F070000007F070000007F8F0000003F8E0000003FDE0000001FDC0000001FDC0000000FF800
  388. 00000FF80000000FF800000007F000000007F000000003E000000003E000000001C00000211B7F
  389. 9A24>I<FFFE7FFC0FFEFFFE7FFC0FFEFFFE7FFC0FFE0FE007E000E007F003F001C007F003F001
  390. C007F807F803C003F807F8038003F807F8038001FC0EFC070001FC0EFC070001FE1EFC0F0000FE
  391. 1C7E0E0000FE1C7E0E0000FF383F1E00007F383F1C00007F783F3C00003FF01FB800003FF01FB8
  392. 00003FF01FF800001FE00FF000001FE00FF000000FC007E000000FC007E000000FC007E0000007
  393. 8003C00000078003C0002F1B7F9A32>I<FFFC0FFF00FFFC0FFF00FFFC0FFF0007F003C00003F8
  394. 07800001FC07800000FE0F000000FF1E0000007F3C0000003FF80000001FF00000000FF0000000
  395. 0FF000000007F000000007F80000000FFC0000001FFE0000001EFE0000003C7F000000783F8000
  396. 00F01FC00001E01FE00001C00FE00003C007F000FFF01FFF80FFF01FFF80FFF01FFF80211B7F9A
  397. 24>I<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007F000700007F800F00003F800E00003
  398. FC01E00001FC01C00001FC01C00000FE03800000FE038000007F070000007F070000007F8F0000
  399. 003F8E0000003FDE0000001FDC0000001FDC0000000FF80000000FF80000000FF800000007F000
  400. 000007F000000003E000000003E000000001C000000001C0000000038000000003800000380780
  401. 00007C07000000FE0F000000FE0E000000FE1E000000FE3C0000007C780000003FE00000000FC0
  402. 00000021277F9A24>I E /Ff 47 123 df<60F0F8680808081010204080050C7C9C0C>39
  403. D<004000800100020006000C000C0018001800300030007000600060006000E000E000E000E000
  404. E000E000E000E000E000E000E000E000600060006000700030003000180018000C000C00060002
  405. 000100008000400A2A7D9E10>I<800040002000100018000C000C000600060003000300038001
  406. 800180018001C001C001C001C001C001C001C001C001C001C001C001C001800180018003800300
  407. 0300060006000C000C00180010002000400080000A2A7E9E10>I<60F0F0701010101020204080
  408. 040C7C830C>44 D<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<60F0F060000000000000
  409. 0000000060F0F06004127C910C>58 D<60F0F0600000000000000000000060F0F0701010101020
  410. 204080041A7C910C>I<001F808000E0618001801980070007800E0003801C0003801C00018038
  411. 000180780000807800008070000080F0000000F0000000F0000000F0000000F0000000F0000000
  412. F0000000F0000000700000807800008078000080380000801C0001001C0001000E000200070004
  413. 000180080000E03000001FC000191E7E9C1E>67 D<FFFFC0000F00F0000F003C000F000E000F00
  414. 07000F0007000F0003800F0003C00F0001C00F0001C00F0001E00F0001E00F0001E00F0001E00F
  415. 0001E00F0001E00F0001E00F0001E00F0001C00F0001C00F0003C00F0003800F0007800F000700
  416. 0F000E000F001C000F007000FFFFC0001B1C7E9B20>I<FFFFFC0F003C0F000C0F00040F00040F
  417. 00060F00020F00020F02020F02000F02000F02000F06000FFE000F06000F02000F02000F02000F
  418. 02010F00010F00020F00020F00020F00060F00060F000C0F003CFFFFFC181C7E9B1C>I<FFF3FF
  419. C00F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F00
  420. 3C000F003C000F003C000FFFFC000F003C000F003C000F003C000F003C000F003C000F003C000F
  421. 003C000F003C000F003C000F003C000F003C000F003C000F003C00FFF3FFC01A1C7E9B1F>72
  422. D<FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
  423. 0F000F000F000F000F000F000F000F00FFF00C1C7F9B0F>I<FFF8000F80000F00000F00000F00
  424. 000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
  425. 000F00080F00080F00080F00180F00180F00100F00300F00700F01F0FFFFF0151C7E9B1A>76
  426. D<FF8000FF800F8000F8000F8000F8000BC00178000BC00178000BC001780009E002780009E002
  427. 780008F004780008F004780008F0047800087808780008780878000878087800083C107800083C
  428. 107800083C107800081E207800081E207800081E207800080F407800080F407800080780780008
  429. 07807800080780780008030078001C03007800FF8307FF80211C7E9B26>I<003F800000E0E000
  430. 0380380007001C000E000E001C0007003C00078038000380780003C0780003C0700001C0F00001
  431. E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C07800
  432. 03C0380003803C0007801C0007000E000E0007001C000380380000E0E000003F80001B1E7E9C200010000010
  433. 000010000010000010000011F000161C00180E001007001007800003800003800003C00003C000
  434. 03C07003C0F003C0F003C0E00380400380400700200600100E000C380003E000121F7E9D17>I<
  435. 007C000182000701000E03800C07801C0780380300380000780000700000700000F1F000F21C00
  436. F40600F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C0700380380380
  437. 3807001807000C0E00061C0001F000121F7E9D17>I<4000007FFFC07FFF807FFF804001008002
  438. 0080020080040000080000080000100000200000200000400000400000C00000C00001C0000180
  439. 00038000038000038000038000078000078000078000078000078000078000078000030000121F
  440. 7D9D17>I<03F0000C0C001006003003002001806001806001806001807001807803003E03003F
  441. 06001FC8000FF00003F80007FC000C7E00103F00300F806003804001C0C001C0C000C0C000C0C0
  442. 00C0C000806001802001001002000C0C0003F000121F7E9D17>I<03F0000E18001C0C00380600
  443. 380700700700700380F00380F00380F003C0F003C0F003C0F003C0F003C07007C07007C03807C0
  444. 180BC00E13C003E3C0000380000380000380000700300700780600780E00700C00201800107000
  445. 0FC000121F7E9D17>I<70F8F8F8700000000000000000000070F8F8F87005147C930D>I<70F8F8
  446. F8700000000000000000000070F0F8F878080808101010202040051D7C930D>I<000100000003
  447. 800000038000000380000007C0000007C0000007C0000009E0000009E0000009E0000010F00000
  448. 10F0000010F00000207800002078000020780000403C0000403C0000403C0000801E0000801E00
  449. 00FFFE0001000F0001000F0001000F00020007800200078002000780040003C00E0003C01F0007
  450. E0FFC03FFE1F207F9F22>65 D<FFFFE0000F80380007801E0007801F0007800F0007800F800780
  451. 0F8007800F8007800F8007800F8007800F0007801F0007801E0007803C0007FFF00007803C0007
  452. 801E0007800F0007800F8007800780078007C0078007C0078007C0078007C0078007C007800780
  453. 07800F8007800F0007801F000F803C00FFFFF0001A1F7E9E20>I<000FC040007030C001C009C0
  454. 038005C0070003C00E0001C01E0000C01C0000C03C0000C07C0000407C00004078000040F80000
  455. 00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000780000007C00
  456. 00407C0000403C0000401C0000401E0000800E000080070001000380020001C004000070380000
  457. 0FC0001A217D9F21>I<FFFFE0000F803C0007801E000780070007800380078003C0078001E007
  458. 8001E0078001F0078000F0078000F0078000F8078000F8078000F8078000F8078000F8078000F8
  459. 078000F8078000F8078000F8078000F0078000F0078000F0078001E0078001E0078003C0078003
  460. 800780070007800E000F803C00FFFFE0001D1F7E9E23>I<FFFFFF000F800F0007800300078003
  461. 000780010007800180078000800780008007800080078080800780800007808000078080000781
  462. 800007FF8000078180000780800007808000078080000780800007800020078000200780002007
  463. 8000400780004007800040078000C0078000C0078001800F800F80FFFFFF801B1F7E9E1F>I<FF
  464. FFFF000F800F000780030007800300078001000780018007800080078000800780008007800080
  465. 078080000780800007808000078080000781800007FF8000078180000780800007808000078080
  466. 000780800007800000078000000780000007800000078000000780000007800000078000000FC0
  467. 0000FFFE0000191F7E9E1E>I<000FE0200078186000E004E0038002E0070001E00F0000E01E00
  468. 00601E0000603C0000603C0000207C00002078000020F8000000F8000000F8000000F8000000F8
  469. 000000F8000000F8000000F8007FFCF80003E0780001E07C0001E03C0001E03C0001E01E0001E0
  470. 1E0001E00F0001E0070001E0038002E000E0046000781820000FE0001E217D9F24>I<FFF8FFF8
  471. 0F800F8007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F
  472. 0007800F0007800F0007800F0007FFFF0007800F0007800F0007800F0007800F0007800F000780
  473. 0F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F000F800F80FF
  474. F8FFF81D1F7E9E22>I<FFFC0FC007800780078007800780078007800780078007800780078007
  475. 80078007800780078007800780078007800780078007800780078007800FC0FFFC0E1F7F9E10>
  476. I<0FFFC0007C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C
  477. 00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00203C00F83C00F83C
  478. 00F83C00F0380040780040700030E0000F800012207E9E17>I<FFFE000FC00007800007800007
  479. 800007800007800007800007800007800007800007800007800007800007800007800007800007
  480. 800007800007800007800207800207800207800207800607800407800407800C07801C0F807CFF
  481. FFFC171F7E9E1C>76 D<FF80001FF80F80001F800780001F0005C0002F0005C0002F0005C0002F
  482. 0004E0004F0004E0004F000470008F000470008F000470008F000438010F000438010F00043801
  483. 0F00041C020F00041C020F00041C020F00040E040F00040E040F00040E040F000407080F000407
  484. 080F000407080F000403900F000403900F000401E00F000401E00F000401E00F000E0C03007C07807C0F807C0F807C0F00780800F00400E00201C0018780007E000141F7D9D
  485. 17>I<0000600000600000E00001C00003C00005C0000DC00009C00011C000238000438000C380
  486. 008380010380020380040700080700180700100700200700400700FFFFF0000E00000E00000E00
  487. 000E00000E00001C00001E0001FFE0141E7E9D17>I<01803001FFE003FFC003FF0003FC000200
  488. 00020000020000040000040000040000047C000587000603800C01800801C00001C00001E00001
  489. E00001E00001E07003C0F803C0F003C0E00380800780400700400E00201C0018700007C000141F
  490. 7D9D17>I<000F8000704000C0200180E00301E00701E00E00C01E00001C00003C000038000078
  491. F800790E007A07007C0300F80380F80380F003C0F003C0F003C0F003C0F00780E00780E00780E0
  492. 0700E00F00600E00701C0030180018700007C000131F7C9D17>I<2000003FFFE07FFFC07FFF80
  493. 400100C00200800200800400000800001000002000004000004000008000018000030000030000
  494. 0700000600000E00000E00001E00001C00001C00003C00003C00003C0000780000780000780000
  495. 300000131F799D17>I<003F0000C1C00100600200600400300C00300C00300C00300C00600E00
  496. 600F80C00FC18007F60003FC0001FC0001FF00063F800C0F801007C03003C06001C06000C0C000
  497. C0C000C0C000C0C00080C0010060030030040018180007E000141F7D9D17>I<007E0001C30003
  498. 01800601C00E01C01C00C03C00E03C00E03C01E07801E07801E07801E07801E07803E07803E038
  499. 03C03807C01C0BC00C13C003E380000780000780000700000E00600E00F01C00F01800E0300080
  500. 600041C0003F0000131F7C9D17>I<0E1F1F1E0C000000000000000000003078F8787008147C93
  501. 0D>I<0000100000001800000038000000380000007800000078000000FC000001BC0000013C00
  502. 00033C0000023C0000063C0000043E0000081E0000081E0000101E0000101E0000201E0000200F
  503. 0000400F0000400F0000FFFF0000800F0001000F80010007800200078002000780040007800400
  504. 07800C0007C03E0007C0FF807FFC1E207E9F22>65 D<0001F808000E061800380138007000F801
  505. E0007803C0007007800030078000300F0000301F0000301E0000303E0000203C0000007C000000
  506. 7C0000007C0000007C000000F8000000F8000000F8000000F8000000F800000078000040780000
  507. 80780000803C0000803C0001001C0002000E00020006000C000300100001C0E000003F00001D21
  508. 7B9F21>67 D<07FFFF00007C01E0003C00F0003C00780078003C0078003C0078001E0078001E00
  509. 78001E0078001F00F0001F00F0001F00F0001F00F0001F00F0001F00F0001F01E0001E01E0003E
  510. 01E0003E01E0003E01E0003C01E0007C03C0007803C000F003C000F003C001E003C003C003C007
  511. 8007800F0007803C00FFFFE000201F7E9E23>I<07FFFFF8007C0078003C0038003C0018007800
  512. 18007800080078000800780008007800080078080800F0100000F0100000F0100000F0300000FF
  513. F00000F0700001E0200001E0200001E0200001E0200001E0000801E0001003C0001003C0001003
  514. C0002003C0002003C0006003C000C0078001C0078007C0FFFFFF801D1F7E9E1F>I<07FFFFF800
  515. 7C0078003C0038003C001800780018007800080078000800780008007800080078000800F01000
  516. 00F0100000F0100000F0300000F0700000FFF00001E0600001E0200001E0200001E0200001E020
  517. 0001E0000003C0000003C0000003C0000003C0000003C0000003C000000780000007C00000FFFE
  518. 00001D1F7E9E1E>I<0001FC04000F030C003C009C0070007C00E0003C01C00038038000180780
  519. 00180F0000181F0000181E0000183E0000103C0000007C0000007C0000007C0000007C000000F8
  520. 000000F8000000F8007FFCF80003E0780001E0780001E0780003C0780003C03C0003C03C0003C0
  521. 1C0003C00E0007C007000B800380118001E06080003F80001E217B9F24>I<07FFC7FFC0007C00
  522. F800003C007800003C007800007800F000007800F000007800F000007800F000007800F0000078
  523. 00F00000F001E00000F001E00000F001E00000F001E00000FFFFE00000F001E00001E003C00001
  524. E003C00001E003C00001E003C00001E003C00001E003C00003C007800003C007800003C0078000
  525. 03C007800003C007800003C007800007800F000007C00F8000FFF8FFF800221F7E9E22>I<07FF
  526. E0007C00003C00003C0000780000780000780000780000780000780000F00000F00000F00000F0
  527. 0000F00000F00001E00001E00001E00001E00001E00001E00003C00003C00003C00003C00003C0
  528. 0003C00007800007C000FFFC00131F7F9E10>I<07FFE07FE0007C001F00003C000C00003C0018
  529. 0000780010000078004000007800800000780100000078020000007804000000F008000000F010
  530. 000000F060000000F0F0000000F1F0000000F278000001E478000001E878000001F03C000001E0
  531. 3C000001E01E000001E01E000003C00F000003C00F000003C00F000003C007800003C007800003
  532. C003C000078003C00007C007E000FFFC3FFC00231F7E9E23>75 D<07FFF000007E0000003C0000
  533. 003C000000780000007800000078000000780000007800000078000000F0000000F0000000F000
  534. 0000F0000000F0000000F0000001E0000001E0000001E0000001E0000001E0008001E0010003C0
  535. 010003C0010003C0030003C0020003C0060003C0060007801E0007807C00FFFFFC00191F7E9E1C
  536. >I<07FC0000FFC0007C0000F800003C00017800003C00017800004E0002F000004E0002F00000
  537. 4E0004F000004E0004F000004E0008F000004E0008F00000870011E00000870011E00000870021
  538. E00000870021E00000870041E00000838041E00001038083C00001038083C00001038103C00001
  539. 038203C0000101C203C0000101C403C0000201C40780000201C80780000201C80780000201D007
  540. 80000200F00780000600E00780000600E00F00000F00C00F8000FFE0C1FFF8002A1F7E9E2A>I<
  541. 07FC01FFC0003E003E00003E001800003E001800004F001000004F001000004780100000478010
  542. 000043C010000043C010000083C020000081E020000081E020000080F020000080F02000008078
  543. 2000010078400001007C400001003C400001003C400001001E400001001E400002000F80000200
  544. 0F800002000F800002000780000200078000060003800006000300000F00010000FFE001000022
  545. 1F7E9E22>I<0003F800001E0E000038070000E0038001C001C003C001E0078000E00F0000F00F
  546. 0000F01E0000F01E0000F83E0000F83C0000F87C0000F87C0000F87C0000F87C0000F8F80001F0
  547. F80001F0F80001F0F80001F0F80003E0780003E0780003C0780007C07C0007803C000F003C001E
  548. 001E001C000E0038000700F00003C3C00000FE00001D217B9F23>I<07FFFF00007C03C0003C01
  549. E0003C00F0007800F0007800F8007800F8007800F8007800F8007800F000F001F000F001E000F0
  550. 03C000F0078000F00F0000FFF80001E0000001E0000001E0000001E0000001E0000001E0000003
  551. C0000003C0000003C0000003C0000003C0000003C000000780000007C00000FFFC00001D1F7E9E
  552. 1F>I<07FFFC00007C0700003C03C0003C01E0007801E0007801F0007801F0007801F0007801F0
  553. 007801E000F003E000F003C000F0078000F00F0000F03C0000FFF00001E0300001E0380001E01C
  554. 0001E01C0001E01C0001E01E0003C03E0003C03E0003C03E0003C03E0003C03E0003C03E020780
  555. 3E0407C01F04FFFC0F18000003E01F207E9E21>82 D<003F040060CC01803C03801C03001C0700
  556. 180600080E00080E00080E00080E00000F00000F80000FE00007FE0003FF8001FFC0007FE00007
  557. E00001E00000E00000F00000F04000E04000E04000E04000E06000C0600180E00380F80300C60C
  558. 0081F80016217D9F19>I<3FFFFFF03C0780F03007803060078030400F0010400F0010C00F0010
  559. 800F0010800F0010800F0010001E0000001E0000001E0000001E0000001E0000001E0000003C00
  560. 00003C0000003C0000003C0000003C0000003C0000007800000078000000780000007800000078
  561. 00000078000000F0000001F800007FFFE0001C1F7A9E21>I<FFFC3FF80F8007C0078003000780
  562. 03000F0002000F0002000F0002000F0002000F0002000F0002001E0004001E0004001E0004001E
  563. 0004001E0004001E0004003C0008003C0008003C0008003C0008003C0008003C00080038001000
  564. 3800100038001000380020003C0040001C0040001C0080000E0100000706000001F800001D2079
  565. 9E22>I<FFF003FE1F8000F80F0000600F0000400F0000400F8000800780018007800100078002
  566. 000780020007C0040003C0040003C0080003C0080003C0100003E0100001E0200001E0200001E0
  567. 400001E0400001F0800000F1000000F1000000F2000000F2000000FC0000007C00000078000000
  568. 7800000070000000700000002000001F207A9E22>I<03FFC0FFC0007F007E00003E003800001E
  569. 003000001E002000000F004000000F008000000F81000000078200000007C600000003C4000000
  570. 03E800000001F000000001F000000000F000000000F800000000F8000000017C000000023C0000
  571. 00043C0000000C1E000000081E000000101F000000200F000000400F800000C0078000008007C0
  572. 00010003C000070003E0001F8007E000FFE01FFE00221F7F9E22>88 D<FFF003FF1F8000F80F00
  573. 00600F8000400780008007C0018003C0010003E0020001E0040001F00C0001F0080000F0100000
  574. F8200000786000007C4000003C8000003F0000001F0000001E0000001E0000001E0000001C0000
  575. 003C0000003C0000003C0000003C0000003C00000038000000780000007C00000FFFC000201F7A
  576. 9E22>I E /Fj 40 122 df<387CFEFFFF7F3B03030706060C1C18702008117C8610>44
  577. D<FFFCFFFCFFFCFFFC0E047F8C13>I<0000180000380000380000700000700000E00000E00000
  578. E00001C00001C0000380000380000380000700000700000700000E00000E00001C00001C00001C
  579. 0000380000380000700000700000700000E00000E00001C00001C00001C0000380000380000700
  580. 000700000700000E00000E00000E00001C00001C0000380000380000380000700000700000E000
  581. 00E00000C0000015317DA41C>47 D<00FE0007FFC00F83E01F01F03E00F83E00F87C007C7C007C
  582. 7C007CFC007CFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007E
  583. FC007EFC007E7C007C7C007C7C007C3E00F83E00F81F01F00F83E007FFC000FE0017207E9F1C>
  584. I<00180000780001F800FFF800FFF80001F80001F80001F80001F80001F80001F80001F80001F8
  585. 0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
  586. 0001F80001F80001F80001F8007FFFE07FFFE013207C9F1C>I<03FC000FFF003C1FC07007E07C
  587. 07F0FE03F0FE03F8FE03F8FE01F87C01F83803F80003F80003F00003F00007E00007C0000F8000
  588. 1F00003E0000380000700000E01801C0180380180700180E00380FFFF01FFFF03FFFF07FFFF0FF
  589. FFF0FFFFF015207D9F1C>I<1000201E01E01FFFC01FFF801FFF001FFE001FF8001BC000180000
  590. 18000018000018000019FC001FFF001E0FC01807E01803E00003F00003F00003F80003F83803F8
  591. 7C03F8FE03F8FE03F8FC03F0FC03F07007E03007C01C1F800FFF0003F80015207D9F1C>53
  592. D<001F8000FFE003F07007C0F00F01F81F01F83E01F83E01F87E00F07C00007C0000FC0800FC7F
  593. C0FCFFE0FD80F0FF00F8FE007CFE007CFC007EFC007EFC007EFC007E7C007E7C007E7C007E3C00
  594. 7C3E007C1E00F80F00F00783E003FFC000FF0017207E9F1C>I<000070000000007000000000F8
  595. 00000000F800000000F800000001FC00000001FC00000003FE00000003FE00000003FE00000006
  596. FF000000067F0000000E7F8000000C3F8000000C3F800000183FC00000181FC00000381FE00000
  597. 300FE00000300FE00000600FF000006007F00000E007F80000FFFFF80000FFFFF800018001FC00
  598. 018001FC00038001FE00030000FE00030000FE000600007F000600007F00FFE00FFFF8FFE00FFF
  599. F825227EA12A>65 D<0003FE0080001FFF818000FF01E38001F8003F8003E0001F8007C0000F80
  600. 0F800007801F800007803F000003803F000003807F000001807E000001807E00000180FE000000
  601. 00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000000007E0000
  602. 00007E000001807F000001803F000001803F000003801F800003000F8000030007C000060003F0
  603. 000C0001F800380000FF00F000001FFFC0000003FE000021227DA128>67
  604. D<FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F0003F0007F0001F8007F0000FC007F000
  605. 07E007F00007E007F00007F007F00003F007F00003F007F00003F007F00003F807F00003F807F0
  606. 0003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F007
  607. F00003F007F00003F007F00007E007F00007E007F0000FC007F0001F8007F0003F0007F0007E00
  608. 07F003FC00FFFFFFF000FFFFFF800025227EA12B>I<FFFFFFFCFFFFFFFC07F000FC07F0003C07
  609. F0001C07F0000C07F0000E07F0000E07F0000607F0180607F0180607F0180607F0180007F03800
  610. 07F0780007FFF80007FFF80007F0780007F0380007F0180007F0180007F0180307F0180307F000
  611. 0307F0000607F0000607F0000607F0000E07F0000E07F0001E07F0003E07F001FCFFFFFFFCFFFF
  612. FFFC20227EA125>I<FFFF83FFFEFFFF83FFFE07F0001FC007F0001FC007F0001FC007F0001FC0
  613. 07F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001F
  614. C007F0001FC007FFFFFFC007FFFFFFC007F0001FC007F0001FC007F0001FC007F0001FC007F000
  615. 1FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0
  616. 001FC007F0001FC007F0001FC0FFFF83FFFEFFFF83FFFE27227EA12C>72
  617. D<03FFFF03FFFF0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007
  618. F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F01807F07E07
  619. F0FF07F0FF07F0FF07F0FF07E07E0FE07C1FC01FFF0007F80018227FA11D>74
  620. D<FFFFE000FFFFE00007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
  621. 000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
  622. F0000007F0000007F0001807F0001807F0001807F0001807F0003807F0003807F0007007F00070
  623. 07F000F007F001F007F007F0FFFFFFF0FFFFFFF01D227EA122>76 D<FFF8001FFEFFFC001FFE07
  624. FC0000C007FE0000C006FF0000C0067F8000C0063FC000C0061FE000C0060FE000C0060FF000C0
  625. 0607F800C00603FC00C00601FE00C00600FE00C00600FF00C006007F80C006003FC0C006001FE0
  626. C006000FF0C0060007F0C0060007F8C0060003FCC0060001FEC0060000FFC00600007FC0060000
  627. 7FC00600003FC00600001FC00600000FC006000007C006000003C006000003C0FFF00001C0FFF0
  628. 0000C027227EA12C>78 D<FFFFFF00FFFFFFE007F007F007F001FC07F000FC07F0007E07F0007E
  629. 07F0007F07F0007F07F0007F07F0007F07F0007F07F0007E07F0007E07F000FC07F001FC07F007
  630. F007FFFFE007FFFF0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
  631. 000007F0000007F0000007F0000007F0000007F00000FFFF8000FFFF800020227EA126>80
  632. D<FFFFFE0000FFFFFFC00007F007F00007F001F80007F000FC0007F0007E0007F0007F0007F000
  633. 7F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FC0007F001F80007F0
  634. 07F00007FFFFC00007FFFF800007F00FE00007F007F00007F003F80007F001FC0007F001FC0007
  635. F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0607F000FE06
  636. 07F000FF0CFFFF803FF8FFFF800FF027227EA12A>82 D<01FC0407FF8C1F03FC3C007C7C003C78
  637. 001C78001CF8000CF8000CFC000CFC0000FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03
  638. FFFE003FFE0003FF00007F00003F00003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF
  639. 00F8C7FFE080FF8018227DA11F>I<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803
  640. 806003F80180E003F801C0E003F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F8
  641. 00000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003
  642. F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8000000
  643. 03F800000003F800000003F800000003F8000003FFFFF80003FFFFF80022227EA127>I<FFFF80
  644. 3FFCFFFF803FFC07F000018007F000018007F000018007F000018007F000018007F000018007F0
  645. 00018007F000018007F000018007F000018007F000018007F000018007F000018007F000018007
  646. F000018007F000018007F000018007F000018007F000018007F000018007F000018007F0000180
  647. 07F000018007F000018003F000030003F800030001F800060000FC000E00007E001C00003F80F8
  648. 00000FFFE0000001FF000026227EA12B>I<FFFF800FFEFFFF800FFE07F80000C007F80001C003
  649. FC00018001FE00030001FE00070000FF00060000FF000C00007F801C00003FC01800003FC03000
  650. 001FE07000000FF06000000FF0E0000007F8C0000003FD80000003FF80000001FF00000001FE00
  651. 000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE
  652. 00000000FE00000000FE00000000FE00000000FE0000001FFFF000001FFFF00027227FA12A>89
  653. D<07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1F03F01
  654. F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B>97
  655. D<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000FC0000FC00
  656. 00FC00007C00007E00007E00003E00301F00600FC0E007FF8000FE0014167E9519>99
  657. D<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC00
  658. 00FC00007C00007C00007E00003E00181F00300FC07003FFC000FF0015167E951A>101
  659. D<003F8000FFC001E3E003C7E007C7E00F87E00F83C00F80000F80000F80000F80000F80000F80
  660. 00FFFC00FFFC000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80
  661. 000F80000F80000F80000F80000F80000F80000F80007FF8007FF80013237FA211>I<FF000000
  662. FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
  663. 001F0000001F0000001F07E0001F1FF8001F307C001F403C001F803E001F803E001F003E001F00
  664. 3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
  665. 003E001F003E001F003E00FFE1FFC0FFE1FFC01A237EA21F>104 D<1C003E007F007F007F003E
  666. 001C000000000000000000000000000000FF00FF001F001F001F001F001F001F001F001F001F00
  667. 1F001F001F001F001F001F001F001F001F00FFE0FFE00B247EA310>I<FF00FF001F001F001F00
  668. 1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
  669. 001F001F001F001F001F001F001F001F00FFE0FFE00B237EA210>108 D<FF07F007F000FF1FFC
  670. 1FFC001F303E303E001F403E403E001F801F801F001F801F801F001F001F001F001F001F001F00
  671. 1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
  672. 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE0FFE0
  673. FFE0FFE0FFE02B167E9530>I<FF07E000FF1FF8001F307C001F403C001F803E001F803E001F00
  674. 3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
  675. 003E001F003E001F003E001F003E00FFE1FFC0FFE1FFC01A167E951F>I<00FE0007FFC00F83E0
  676. 1E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C
  677. 7C007C3E00F81F01F00F83E007FFC000FE0017167E951C>I<FF0FE000FF3FF8001FF07C001F80
  678. 3E001F001F001F001F801F001F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F
  679. 000FC01F000FC01F001F801F001F801F803F001FC03E001FE0FC001F3FF8001F0FC0001F000000
  680. 1F0000001F0000001F0000001F0000001F0000001F0000001F000000FFE00000FFE000001A207E
  681. 951F>I<FE1F00FE3FC01E67E01EC7E01E87E01E87E01F83C01F00001F00001F00001F00001F00
  682. 001F00001F00001F00001F00001F00001F00001F00001F0000FFF000FFF00013167E9517>114
  683. D<0FF3003FFF00781F00600700E00300E00300F00300FC00007FE0007FF8003FFE000FFF0001FF
  684. 00000F80C00780C00380E00380E00380F00700FC0E00EFFC00C7F00011167E9516>I<01800001
  685. 80000180000180000380000380000780000780000F80003F8000FFFF00FFFF000F80000F80000F
  686. 80000F80000F80000F80000F80000F80000F80000F80000F80000F81800F81800F81800F81800F
  687. 81800F830007C30003FE0000F80011207F9F16>I<FF01FE00FF01FE001F003E001F003E001F00
  688. 3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
  689. 003E001F003E001F003E001F007E001F00FE000F81BE0007FF3FC001FC3FC01A167E951F>I<FF
  690. E01FE0FFE01FE00F8006000F8006000FC00E0007C00C0007E01C0003E0180003E0180001F03000
  691. 01F0300000F8600000F86000007CC000007CC000007FC000003F8000003F8000001F0000001F00
  692. 00000E0000000E00001B167F951E>I<FFE7FF07F8FFE7FF07F81F007800C00F807801800F807C
  693. 01800F807C018007C07E030007C0DE030007E0DE070003E0DF060003E18F060001F18F0C0001F3
  694. 8F8C0001FB079C0000FB07D80000FE03D800007E03F000007E03F000007C01F000003C01E00000
  695. 3800E000001800C00025167F9528>I<FFE01FE0FFE01FE00F8006000F8006000FC00E0007C00C
  696. 0007E01C0003E0180003E0180001F0300001F0300000F8600000F86000007CC000007CC000007F
  697. C000003F8000003F8000001F0000001F0000000E0000000E0000000C0000000C00000018000078
  698. 180000FC380000FC300000FC60000069C000007F8000001F0000001B207F951E>121
  699. D E /Fk 15 122 df<FFFFFFFFF00000FFFFFFFFFF0000FFFFFFFFFFC00000FFC000FFF00000FF
  700. C0000FFC0000FFC00007FE0000FFC00001FF0000FFC00000FF8000FFC000007FC000FFC000003F
  701. E000FFC000003FE000FFC000001FF000FFC000001FF000FFC000001FF800FFC000000FF800FFC0
  702. 00000FFC00FFC000000FFC00FFC000000FFC00FFC000000FFC00FFC000000FFE00FFC000000FFE
  703. 00FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000
  704. 000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFE00FFC000000FFC00FFC000000FFC00
  705. FFC000000FFC00FFC000000FFC00FFC000000FF800FFC000001FF800FFC000001FF800FFC00000
  706. 1FF000FFC000003FE000FFC000003FE000FFC000007FC000FFC00000FF8000FFC00001FF0000FF
  707. C00003FE0000FFC0000FFC0000FFC0007FF000FFFFFFFFFFE000FFFFFFFFFF0000FFFFFFFFF000
  708. 0037317EB03F>68 D<FFFFFFC03FFFFFF0FFFFFFC03FFFFFF0FFFFFFC03FFFFFF000FFC000003F
  709. F00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC00000
  710. 3FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000
  711. 003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC0
  712. 00003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFFFFFFFFFF00000FF
  713. FFFFFFFFF00000FFFFFFFFFFF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000
  714. FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF000
  715. 00FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF0
  716. 0000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003F
  717. F00000FFC000003FF00000FFC000003FF00000FFC000003FF000FFFFFFC03FFFFFF0FFFFFFC03F
  718. FFFFF0FFFFFFC03FFFFFF03C317EB041>72 D<3FFFFFFFFFFF003FFFFFFFFFFF003FFFFFFFFFFF
  719. 003FE00FFC01FF007F000FFC003F807E000FFC001F807C000FFC000F8078000FFC00078078000F
  720. FC00078070000FFC00038070000FFC00038070000FFC00038070000FFC000380E0000FFC0001C0
  721. E0000FFC0001C0E0000FFC0001C0E0000FFC0001C000000FFC00000000000FFC00000000000FFC
  722. 00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000
  723. 000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00
  724. 000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0000000000
  725. 0FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0000
  726. 0000000FFC00000000000FFC00000000000FFC000000007FFFFFFF8000007FFFFFFF8000007FFF
  727. FFFF800032307DAF39>84 D<007FF8000003FFFF000007FFFFC0000FE01FE0001FF007F0001FF0
  728. 03F8001FF003FC001FF001FE000FE001FE0007C001FE00010001FE00000001FE00000001FE0000
  729. 01FFFE00003FFFFE0001FFF1FE0007FE01FE000FF001FE001FC001FE003F8001FE007F8001FE00
  730. FF0001FE00FF0001FE00FF0001FE00FF0001FE00FF0003FE007F8003FE007FC00EFE003FF03CFF
  731. 000FFFF87FF807FFF03FF800FF800FF825207E9F28>97 D<0007FF00007FFFE000FFFFF003FC03
  732. F807F007FC0FE007FC1FE007FC3FC007FC3FC003F87FC001F07F8000407F800000FF800000FF80
  733. 0000FF800000FF800000FF800000FF800000FF800000FF8000007F8000007FC000007FC000003F
  734. C0000E3FE0000E1FE0001C0FF0001C07F8007803FF01F000FFFFE0007FFF800007FC001F207D9F
  735. 25>99 D<0007FC0000003FFF800000FFFFE00003FC07F00007F801F8000FE000FC001FE0007E00
  736. 3FC0007E003FC0003F007FC0003F007F80003F007F80003F80FF80003F80FF80003F80FFFFFFFF
  737. 80FFFFFFFF80FFFFFFFF80FF80000000FF80000000FF800000007F800000007F800000003FC000
  738. 00003FC00003801FC00003801FE00007800FF0000F0007F8001E0003FE00FC0000FFFFF800003F
  739. FFE0000003FF000021207E9F26>101 D<001FF007E000FFFE3FF001FFFF7FF807F83FF1F80FE0
  740. 0FE1F80FE00FE0F01FC007F0601FC007F0003FC007F8003FC007F8003FC007F8003FC007F8003F
  741. C007F8001FC007F0001FC007F0000FE00FE0000FE00FE00007F83FC00007FFFF000006FFFE0000
  742. 0E1FF000000E000000001E000000001E000000001F000000001F800000001FFFFFC0000FFFFFF8
  743. 000FFFFFFE0007FFFFFF0003FFFFFF8007FFFFFFC01FFFFFFFE03F00007FE07E00000FF0FC0000
  744. 07F0FC000003F0FC000003F0FC000003F0FC000003F07E000007E03F00000FC01FC0003F800FF8
  745. 01FF0007FFFFFE0000FFFFF000001FFF8000252F7E9F29>103 D<01C00007F0000FF8000FF800
  746. 1FFC001FFC001FFC000FF8000FF80007F00001C000000000000000000000000000000000000000
  747. 00000000000001F800FFF800FFF800FFF8000FF80007F80007F80007F80007F80007F80007F800
  748. 07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
  749. 07F80007F80007F80007F80007F800FFFF80FFFF80FFFF8011337DB217>105
  750. D<01F8000000FFF8000000FFF8000000FFF80000000FF800000007F800000007F800000007F800
  751. 000007F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8
  752. 00000007F800000007F800000007F8007FFC07F8007FFC07F8007FFC07F8001FC007F8001F0007
  753. F8003E0007F800780007F801F00007F803E00007F807800007F81F000007F83E000007F87C0000
  754. 07F9FE000007FBFF000007FFFF800007FF7FC00007FE3FE00007F81FE00007F01FF00007F00FF8
  755. 0007F007FC0007F003FE0007F001FF0007F000FF0007F000FF8007F0007FC007F0003FE007F000
  756. 3FF0FFFF80FFFFFFFF80FFFFFFFF80FFFF28327EB12C>107 D<01F800FFF800FFF800FFF8000F
  757. F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007
  758. F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007
  759. F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007
  760. F80007F80007F80007F800FFFFC0FFFFC0FFFFC012327DB117>I<03F007F8000FF000FFF03FFF
  761. 007FFE00FFF07FFF80FFFF00FFF0F03FC1E07F800FF1C01FE3803FC007F3000FE6001FC007F600
  762. 0FFC001FE007FE000FFC001FE007FC000FF8001FE007FC000FF8001FE007F8000FF0001FE007F8
  763. 000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007
  764. F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE0
  765. 07F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001F
  766. E007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE0FFFFC1FFFF83FFFFFFFFC1FFFF83
  767. FFFFFFFFC1FFFF83FFFF40207D9F45>I<03F007F80000FFF03FFF0000FFF07FFF8000FFF0F03F
  768. C0000FF1C01FE00007F3000FE00007F6000FF00007FE000FF00007FC000FF00007FC000FF00007
  769. F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000F
  770. F00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007
  771. F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000FFFFC1FF
  772. FF80FFFFC1FFFF80FFFFC1FFFF8029207D9F2E>I<01F80FF000FFF87FFE00FFF9FFFF80FFFFE0
  773. 7FC00FFF001FE007FE000FF007F80007F807F80007FC07F80003FC07F80003FE07F80003FE07F8
  774. 0001FE07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07
  775. F80001FF07F80001FE07F80003FE07F80003FE07F80003FC07F80007FC07FC0007F807FE000FF0
  776. 07FF001FE007FBE07FC007F9FFFF0007F87FFE0007F81FE00007F800000007F800000007F80000
  777. 0007F800000007F800000007F800000007F800000007F800000007F800000007F800000007F800
  778. 0000FFFFC00000FFFFC00000FFFFC00000282E7E9F2E>112 D<00FF870007FFEF001FFFFF003F
  779. 007F003C001F0078000F00F8000700F8000700F8000700FC000700FF000000FFF800007FFFC000
  780. 3FFFF0003FFFFC000FFFFE0007FFFF0001FFFF80001FFF800000FFC000001FC060000FC0E00007
  781. C0E00007C0F00007C0F8000780F8000F80FE000F00FF803E00FFFFFC00F3FFF800C07FC0001A20
  782. 7D9F21>115 D<FFFF801FFEFFFF801FFEFFFF801FFE07F80003E007F80001C007FC0003C003FC
  783. 00038003FE00078001FE00070001FF000F0000FF000E0000FF801E00007F801C00007FC03C0000
  784. 3FC03800003FE03800001FE07000001FE07000000FF0E000000FF0E000000FF9E0000007F9C000
  785. 0007FFC0000003FF80000003FF80000001FF00000001FF00000000FE00000000FE000000007C00
  786. 0000007C000000003800000000380000000070000000007000000000F000003C00E000007E01E0
  787. 0000FF01C00000FF03800000FF07800000FF0F0000007A3E0000007FFC0000003FF80000000FC0
  788. 000000272E7E9F2C>121 D E end
  789. %%EndProlog
  790. %%BeginSetup
  791. %%Feature: *Resolution 300
  792. TeXDict begin @letter /letter where {pop letter} if
  793. %%EndSetup
  794. %%Page: 0 1
  795. bop 0 205 1859 2 v 0 1511 2 1307 v 435 527 a Fk(Dynamic)26
  796. b(T)n(yping)h(in)h(Hask)n(ell)753 733 y Fj(John)19 b(P)n(eterson)425
  797. 850 y(Researc)n(h)f(Rep)r(ort)g(Y)-5 b(ALEU/DCS/RR-1022)740
  798. 966 y(Y)g(ale)19 b(Univ)n(ersit)n(y)518 1083 y(Departmen)n(t)e(of)i(Computer)
  799. e(Science)652 1199 y(New)h(Ha)n(v)n(en,)h(CT)g(06520)p 1857
  800. 1511 V 0 1513 1859 2 v eop
  801. %%Page: 1 2
  802. bop 0 50 a Fi(1)45 b(INTR)o(ODUCTION)1339 b Fh(1)809 199 y
  803. Fg(Abstract)176 257 y Ff(Static)20 b(t)o(yp)q(e)g(systems,)h(as)f(used)g(in)g
  804. (suc)o(h)g(languages)f(as)h(C,)f(ML,)g(and)h(Hask)o(ell,)g(p)q(erform)114
  805. 307 y(all)15 b(t)o(yp)q(e)h(inference)i(at)e(compile)f(time;)g(during)h
  806. (execution)h(the)g(t)o(yp)q(e)g(of)e(an)h(ob)r(ject)h(is)f(implicit.)114
  807. 357 y(Dynamic)h(t)o(yping,)i(as)g(used)g(in)g(Lisp)g(or)g(Smalltal)o(k,)e
  808. (requires)j(the)g(t)o(yp)q(e)f(of)f(an)h(ob)r(ject)h(to)f(b)q(e)114
  809. 406 y(explicitly)12 b(enco)q(ded)i(as)f(part)h(of)e(its)h(v)n(alue.)k(Eac)o
  810. (h)d(of)e(these)j(approac)o(hes)f(has)f(adv)n(an)o(tages:)k(static)114
  811. 456 y(t)o(yping)h(detects)j(t)o(yp)q(e)f(errors)g(at)f(compile)f(time)f(and)i
  812. (has)g(no)g(run)o(time)f(o)o(v)o(erhead.)34 b(Dynamic)114 506
  813. y(t)o(yping)14 b(is)h(more)g(expressiv)o(e.)24 b(In)15 b(this)h(pap)q(er)g(w)
  814. o(e)f(study)h(the)g(incorp)q(oration)f(of)g(dynamic)e(t)o(yp)q(es)114
  815. 556 y(within)h(the)i(framew)o(ork)d(of)i(the)g(Hask)o(ell)g(t)o(yp)q(e)h
  816. (system,)e(a)h(deriv)n(ativ)o(e)g(of)f(the)i(Hindley)f(-)f(Milner)114
  817. 606 y(system)k(used)h(in)f(ML.)g(Unlik)o(e)g(ML,)g(the)h(Hask)o(ell)f(t)o(yp)
  818. q(e)h(system)f(allo)o(ws)f(o)o(v)o(erloading)g(\(ad-ho)q(c)114
  819. 655 y(p)q(olymorphism)o(\))11 b(using)j(t)o(yp)q(e)g(classes.)176
  820. 705 y(The)h(system)e(of)h(dynamic)e(t)o(yping)i(describ)q(ed)i(here)f(builds)
  821. f(on)g(w)o(ork)g(done)g(in)g(the)h(ML)f(com-)114 755 y(m)o(unit)o(y)m(.)h(In)
  822. e(addition)f(to)g(co)q(ercion)i(to)f(and)g(from)e(the)i(domain)e(of)h
  823. (dynamic)g(t)o(yp)q(es,)h(w)o(e)g(allo)o(w)f(for)114 805 y(the)f(direct)g
  824. (manipulation)d(of)h(ob)r(jects)j(within)e(the)h(dynamic)e(domain)f(in)i(a)h
  825. (t)o(yp)q(e)g(safe)f(manner.)16 b(Of)114 855 y(particular)e(practical)h(imp)q
  826. (ortance)f(is)h(the)h(abilit)o(y)d(to)i(generalize)h(an)f(op)q(eration)f(o)o
  827. (v)o(er)h(arbitrary)114 904 y(t)o(yp)q(es)h(based)h(on)e(the)i(structure)h
  828. (of)d(the)h(data)g(t)o(yp)q(e.)24 b(This)16 b(dynamic)e(t)o(yping)h(system)g
  829. (has)h(b)q(een)114 954 y(implem)o(en)o(ted)11 b(as)h(a)g(part)g(of)g(the)h(Y)
  830. m(ale)e(Hask)o(ell)h(system)g(and)g(dynamic)f(t)o(yp)q(es)i(ha)o(v)o(e)f(b)q
  831. (een)h(used)g(to)114 1004 y(build)f(the)i(`deriv)o(ed)f(instance')g(comp)q
  832. (onen)o(t)g(of)f(the)i(Hask)o(ell)e(language)h(in)f(a)h(m)o(uc)o(h)f(more)g
  833. (general)114 1054 y(manner)h(than)h(presen)o(tly)g(used.)0
  834. 1205 y Fe(1)69 b(In)n(tro)r(duction)0 1317 y Fd(This)23 b(do)q(cumen)o(t)f
  835. (is)g(v)o(ery)e(preliminary)l(.)37 b(A)21 b(revised)h(v)o(ersion)f(will)i
  836. (replace)g(this)f(so)q(on.)0 1374 y(Lo)q(ok)c(in)g(the)g(compiler)g(sources)e
  837. (for)h(accurate)i(do)q(cumen)o(tation.)0 1441 y Fh(P)o(olymorphic)g(static)f
  838. (t)o(yping,)h(as)f(represen)o(ted)g(b)o(y)g(the)h(ML)f(t)o(yp)q(e)g(system,)g
  839. (has)g(man)o(y)g(w)o(ell)h(kno)o(wn)0 1497 y(adv)m(an)o(tages:)f(a)12
  840. b(v)o(ery)g(expressiv)o(e)h(t)o(yp)q(e)f(language,)h(complete)g(t)o(yp)q(e)g
  841. (error)e(detection)i(at)f(compile)i(time,)0 1553 y(and)k(run)f(time)h
  842. (e\016ciency)l(.)29 b(In)18 b(Hask)o(ell,)g(the)g(expressiv)o(eness)g(of)f
  843. (this)h(t)o(yp)q(e)g(system)f(is)h(increased)h(to)0 1610 y(supp)q(ort)12
  844. b(ad-ho)q(c)g(p)q(olymorphism)h(\(o)o(v)o(erloading\).)18 b(A)12
  845. b(signi\014can)o(t)g(adv)m(an)o(tage)f(of)h(p)q(olymorphic)h(t)o(yping)0
  846. 1666 y(is)i(that)e(p)q(olymorphic)j(functions)f(can)g(b)q(e)g(applied)h(to)e
  847. (ob)s(jects)f(whose)i(t)o(yp)q(e)f(is)h(unkno)o(wn)f(in)h(the)g(t)o(yp)q(e)0
  848. 1723 y(en)o(vironmen)o(t)c(of)g(the)g(p)q(olymorphic)h(function.)19
  849. b(Ho)o(w)o(ev)o(er,)11 b(this)g(adv)m(an)o(tage)f(is)i(ac)o(hiev)o(ed)g(b)o
  850. (y)e(restricting)0 1779 y(op)q(erations)j(on)g(p)q(olymorphic)h(ob)s(jects.)k
  851. (The)13 b(class)g(system)g(used)g(in)h(Hask)o(ell)f(relaxes)g(this)g
  852. (restriction)0 1836 y(b)o(y)19 b(pro)o(viding)h(class)g(metho)q(ds)f(whic)o
  853. (h)h(are)f(capable)h(of)e(applying)j(a)e(prede\014ned)h(set)f(of)g(op)q
  854. (erations)0 1892 y(for)f(arbitrary)g(t)o(yp)q(es)g(whic)o(h)h(ha)o(v)o(e)f(b)
  855. q(een)i(admitted)e(to)g(a)g(class.)30 b(Ho)o(w)o(ev)o(er,)18
  856. b(ev)o(en)h(within)g(the)g(class)0 1949 y(system)13 b(there)g(is)h(no)f(w)o
  857. (a)o(y)f(to)h(in)o(teract)g(in)h(an)f(unrestricted)h(manner)f(with)h(ob)s
  858. (jects)e(of)h(unkno)o(wn)g(t)o(yp)q(e.)0 2005 y(Our)k(goal)f(is)h(to)f(p)q
  859. (ermit)h(the)g(same)f(op)q(erations)h(to)f(b)q(e)h(p)q(erformed)g(on)f(an)h
  860. (ob)s(ject)f(from)g(outside)h(the)0 2062 y(t)o(yp)q(e)e(en)o(vironmen)o(t)h
  861. (as)f(on)g(an)h(ob)s(ject)f(whose)g(t)o(yp)q(e)g(is)h(completely)h(kno)o(wn.)
  862. j(This)c(essen)o(tially)h(allo)o(ws)0 2118 y(a)e(stronger)f(form)h(of)f(p)q
  863. (olymorphism)j(without)e(sacri\014cing)h(t)o(yp)q(e)g(safet)o(y)l(.)0
  864. 2185 y(W)l(e)h(ha)o(v)o(e)g(c)o(hosen)g(dynamic)i(t)o(yping)e(to)f(pro)o
  865. (vide)i(this)g(enhanced)g(p)q(olymorphism)h(b)q(ecause)f(it)f(has)g(a)0
  866. 2241 y(minimal)d(impact)f(on)g(the)f(existing)i(t)o(yp)q(e)f(system.)18
  867. b(A)13 b(single)h(new)e(t)o(yp)q(e,)h Fc(Dynamic)o Fh(,)g(and)g(a)f(set)g(of)
  868. h(op)q(er-)0 2298 y(ations)f(on)g(dynamic)h(ob)s(jects,)f(and)h(a)f(lifting)h
  869. (of)f(t)o(yp)q(e)g(declarations)h(to)f(the)g(run)o(time)h(en)o(vironmen)o(t)f
  870. (are)0 2354 y(all)17 b(that)e(is)h(required.)23 b(Unlik)o(e)17
  871. b(more)f(general)g(systems)f(in)o(v)o(olving)i(\014rst)f(class)g(t)o(yp)q
  872. (es,)f(t)o(yp)q(e)h(inference)0 2411 y(remains)i(essen)o(tially)h(unc)o
  873. (hanged.)27 b(Ho)o(w)o(ev)o(er,)16 b(unlik)o(e)j(some)e(other)g(dynamic)h(t)o
  874. (yping)g(systems)f(t)o(yp)q(e)0 2467 y(descriptions)f(are)f(made)g(a)o(v)m
  875. (ailable)i(to)d(the)i(user.)k(While)c(this)f(is)h(similar)g(to)f(the)g(p)q(o)
  876. o(w)o(er)f(of)h(\014rst)g(class)0 2524 y(t)o(yp)q(es,)g(w)o(e)g(do)g(not)g
  877. (pro)o(vide)g(a)g(means)g(to)g(generate)g(new)g(data)g(t)o(yp)q(es)g(at)g
  878. (run)o(time.)0 2591 y(Dynamic)j(t)o(yping)g(has)g(a)f(n)o(um)o(b)q(er)i(of)e
  879. (uses)h(in)h(the)f(Y)l(ale)g(Hask)o(ell)h(system.)27 b(The)18
  880. b(deriv)o(ed)h(instances)0 2647 y(used)i(b)o(y)g(the)g(Hask)o(ell)h(language)
  881. f(to)f(generalize)j(certain)e(op)q(erations)g(o)o(v)o(er)f(arbitrary)g(t)o
  882. (yp)q(es)h(ha)o(v)o(e)0 2704 y(b)q(een)h(implemen)o(ted)h(using)e(dynamic)h
  883. (t)o(yping)f(instead)g(of)g(expanding)h(these)f(instances)h(to)e(source)p
  884. eop
  885. %%Page: 2 3
  886. bop 0 50 a Fi(2)45 b(THE)15 b(HASKELL)i(CLASS)f(SYSTEM)1013
  887. b Fh(2)0 199 y(co)q(de)17 b(using)h(the)e(templates)h(pro)o(vided)h(in)f(the)
  888. g(Hask)o(ell)g(rep)q(ort.)24 b(Dynamic)17 b(t)o(yping)g(is)g(also)g(essen)o
  889. (tial)0 256 y(to)d(the)g(debugging)i(system)e(b)q(eing)i(dev)o(elop)q(ed)g
  890. (for)e(the)g(Y)l(ale)i(system.)j(Finally)l(,)d(dynamic)f(t)o(yping)g(can)0
  891. 312 y(b)q(e)h(used)g(to)e(implemen)o(t)j(existen)o(tial)f(t)o(yping.)0
  892. 379 y(Previous)f(w)o(ork)f(on)h(dynamic)h(t)o(yping)f([2)o(,)f(3])h(has)f(fo)
  893. q(cused)i(on)f(the)g(basic)g(problem)h(of)e(mo)o(ving)h(v)m(alues)0
  894. 436 y(in)o(to)j(and)g(out)g(of)g(the)g(dynamic)h(domain)f(in)h(a)f(t)o(yp)q
  895. (e)g(safe)g(manner.)28 b(While)20 b(the)e(system)f(presen)o(ted)0
  896. 492 y(here)j(has)f(these)g(same)g(capabilities,)j(w)o(e)d(will)h(fo)q(cus)g
  897. (on)f(this)g(issue)h(of)f(structural)g(p)q(olymorphism.)0 548
  898. y(While)f(structural)f(p)q(olymorphism)h(is)f(commonly)g(used)h(in)f(dynamic)
  899. h(languages,)f(it)g(is)h(not)e(presen)o(t)0 605 y(in)h(previous)f(w)o(ork)f
  900. (in)h(dynamic)h(t)o(yping)f(in)h(p)q(olymorphic)g(languages.)22
  901. b(The)16 b(goal)f(of)g(this)i(w)o(ork)d(is)j(to)0 661 y(create)c(a)g(simple)i
  902. (system)e(of)g(dynamic)i(t)o(yp)q(es)e(whic)o(h)h(is)g(b)q(oth)g(w)o(ell)g
  903. (in)o(tegrated)g(in)o(to)f(the)h(Hask)o(ell)g(t)o(yp)q(e)0
  904. 718 y(system)h(and)g(su\016cien)o(tly)i(expressiv)o(e)f(to)e(accomo)q(date)h
  905. (structural)g(p)q(olymorphism.)0 872 y Fe(2)69 b(The)23 b(Hask)n(ell)e(Class)
  906. h(System)0 984 y Fh(Hask)o(ell[1])14 b(features)g(an)g(extension)h(to)f(the)g
  907. (ML)h(t)o(yp)q(e)f(system)g(kno)o(wn)g(as)g Fb(typ)n(e)s(classes)r
  908. Fh(.)20 b(T)o(yp)q(e)14 b(classes)0 1040 y(implemen)o(t)19
  909. b(o)o(v)o(erloading)e(\(ad-ho)q(c)h(p)q(olymorphism\).)27 b(An)18
  910. b(o)o(v)o(erloaded)f(function)h(has)f(m)o(ultiple)j(def-)0
  911. 1096 y(initions,)g(one)f(for)f(eac)o(h)g(t)o(yp)q(e)g(for)g(whic)o(h)h(the)g
  912. (o)o(v)o(erloading)f(is)h(de\014ned.)31 b(In)19 b(Hask)o(ell,)g(a)f
  913. Fb(class)j Fh(is)e(an)0 1153 y(op)q(eration)c(or)f(set)h(of)f(op)q(erations)h
  914. (whose)g(b)q(eha)o(vior)g(is)h(selected)g(b)o(y)e(the)h(t)o(yp)q(e)g(of)f(ob)
  915. s(ject)h(it)g(is)g(applied)0 1209 y(to.)23 b(An)17 b Fb(instanc)n(e)h
  916. Fh(pro)o(vides)f(a)f(de\014nition)i(of)e(the)h(op)q(erations)f(in)i(a)e
  917. (class)g(for)g(a)g(\014xed)h(t)o(yp)q(e.)24 b(A)17 b(class)0
  918. 1266 y(ma)o(y)g(ha)o(v)o(e)g(man)o(y)h(di\013eren)o(t)f(asso)q(ciated)h
  919. (instances.)28 b(T)o(yp)q(e)18 b(classes)h(ma)o(y)e(b)q(e)h(asso)q(ciated)g
  920. (with)g(t)o(yp)q(e)0 1322 y(v)m(ariables)k(using)g(a)e Fb(c)n(ontext)t
  921. Fh(.)36 b(A)21 b(con)o(text)f(asso)q(ciates)h(t)o(yp)q(e)g(v)m(ariables)h
  922. (with)f(classes)g(and)g(app)q(ears)0 1379 y(in)e(t)o(yp)q(e)f(signatures)h
  923. (as)f(a)g(set)g(of)g(class)g(and)h(t)o(yp)q(e)f(v)m(ariable)i(pairs)e
  924. (preceeding)i Fc(=>)p Fh(.)29 b(The)19 b(signature)0 1435 y
  925. Fc(Num)k(a)h(=>)g(a)f(->)h(a)g(->)f(a)15 b Fh(w)o(ould)g(describ)q(e)i(a)e
  926. (function)g(with)h(t)o(w)o(o)d(argumen)o(ts)h(and)h(returned)h(v)m(alue)0
  927. 1492 y(of)f(the)g(same)g(t)o(yp)q(e,)g(whic)o(h)h(m)o(ust)f(b)q(e)g(in)h
  928. (class)g Fc(Num)p Fh(.)0 1559 y(The)e(class)f(system)g(is)h(essen)o(tially)h
  929. (a)e(dispatc)o(hing)i(mec)o(hanism.)20 b(A)13 b(call)i(to)d(an)i(op)q
  930. (eration)f(in)i(a)e(class)g(is)0 1615 y(forw)o(arded)i(to)g(the)g(handler)i
  931. (attac)o(hed)e(to)g(the)h(argumen)o(t)f(t)o(yp)q(e)g(b)o(y)h(an)f(instance)i
  932. (declaration.)22 b(T)o(yp)q(e)0 1671 y(inference)17 b(ensures)f(that)e(suc)o
  933. (h)i(a)e(handler)j(will)g(alw)o(a)o(ys)d(exist.)0 1738 y(T)o(yp)q(e)j
  934. (classes)g(are)g(implemen)o(ted)h(using)g Fb(dictionaries)s
  935. Fh(.)25 b(Eac)o(h)16 b(instance)i(declaration)f(de\014nes)h(a)f(dic-)0
  936. 1795 y(tionary)l(.)i(The)12 b(con)o(text)g(of)g(a)g(t)o(yp)q(e)h(signature)f
  937. (will)i(b)q(e)f(manifested)g(at)f(execution)h(time)g(b)o(y)f(the)h(passing)0
  938. 1851 y(of)i(dictionary)h(parameters.)j(A)c(function)h(suc)o(h)g(as)0
  939. 1956 y Fc(f)24 b(::)f(Num)h(a)f(=>)h(a)g(->)f(a)h(->)g(a)0
  940. 2060 y Fh(will)d(b)q(e)g(passed)e(a)h(dictionary)g(whic)o(h)h(con)o(tains)e
  941. (the)h(implemen)o(tation)h(for)e(op)q(erations)h(in)g Fc(Num)g
  942. Fh(for)0 2116 y(whatev)o(er)c(t)o(yp)q(e)h(of)f(v)m(alue)i(is)f(passed)g(to)f
  943. Fc(f)p Fh(.)25 b(Dictionary)17 b(con)o(v)o(ersion)f(is)i(a)e(pro)q(cess)h(in)
  944. h(whic)o(h)f(hidden)0 2173 y(dictionary)e(parameters)e(are)g(added)i(to)e
  945. (functions)h(during)h(t)o(yp)q(e)f(c)o(hec)o(king.)20 b(The)14
  946. b(implemen)o(tation)h(of)0 2229 y(t)o(yp)q(e)g(classes)h(is)g(describ)q(ed)h
  947. (in)f([4)o(].)0 2296 y(A)d(\014xed)h(set)f(of)g(structurally)h(p)q
  948. (olymorphic)h(op)q(erations)e(in)i(Hask)o(ell)f(is)g(supplied)h(using)f(a)f
  949. (mec)o(hanism)0 2353 y(called)23 b Fb(derive)n(d)e(instanc)n(es)q
  950. Fh(.)38 b(Deriv)o(ed)21 b(instances)h(are)f(co)q(de)g(templates)g(de\014ned)i
  951. (b)o(y)e(the)g(language)0 2409 y(standard)16 b(whic)o(h)g(m)o(ust)g(b)q(e)g
  952. (wired)h(in)o(to)f(the)g(compiler.)23 b(Eac)o(h)16 b(use)g(of)g(a)g(deriv)o
  953. (ed)h(instance)f(in)h(a)f(t)o(yp)q(e)0 2466 y(declaration)g(is)g(expanded)g
  954. (in)o(to)f(t)o(yp)q(e-sp)q(eci\014c)i(source)f(co)q(de.)p eop
  955. %%Page: 3 4
  956. bop 0 50 a Fi(3)45 b(D)o(YNAMIC)15 b(TYPING)1283 b Fh(3)0 199
  957. y Fe(3)69 b(Dynamic)22 b(T)n(yping)0 311 y Fh(Dynamic)16 b(t)o(yping)g(uses)h
  958. (a)e(single)j(t)o(yp)q(e,)d(here)i(called)g Fc(Dynamic)o Fh(,)f(to)f(hold)i
  959. (ob)s(jects)e(of)h(arbitrary)f(t)o(yp)q(e.)0 368 y(T)l(o)k(ensure)g(t)o(yp)q
  960. (e)g(correctness,)g(these)g(v)m(alues)h(are)f(coupled)h(with)f(a)g(t)o(yp)q
  961. (e)f(tag)g(whic)o(h)i(captures)f(the)0 424 y(same)c(sort)f(of)h(t)o(yp)q(e)g
  962. (information)h(used)f(during)h(compile)h(time)f(t)o(yp)q(e)f(c)o(hec)o(king.)
  963. 0 491 y(The)20 b Fc(toDynamic)f Fh(construct)h(creates)g(a)g(v)m(alue)h(of)f
  964. (t)o(yp)q(e)g Fc(Dynamic)o Fh(.)34 b(This)21 b(pairs)f(a)g(v)m(alue)h(with)g
  965. (the)0 548 y(principal)f(t)o(yp)q(e)e(of)g(that)f(v)m(alue)i(as)f(inferred)h
  966. (at)e(compile)i(time.)29 b(Since)19 b(it)f(captures)g(a)g(v)m(alue)h(of)e(an)
  967. o(y)0 604 y(t)o(yp)q(e)e(and)h(returns)f(a)g(dynamic,)g(it)h(resem)o(bles)g
  968. (a)f(function)h(with)f(the)g(t)o(yping)0 704 y Fc(toDynamic)23
  969. b(::)g(a)h(->)g(Dynamic)0 804 y Fh(P)o(olymorphic)19 b(t)o(yping)f(in)o(tro)q
  970. (duces)h(some)f(complications.)31 b(The)18 b(t)o(yp)q(e)h(computed)f(for)g
  971. (an)g(ob)s(ject)g(at)0 861 y(compile)e(time)f(ma)o(y)f(con)o(tain)h(either)h
  972. (univ)o(ersally)g(or)f(existen)o(tially)h(quan)o(ti\014ed)g(t)o(yp)q(e)f(v)m
  973. (ariables.)21 b(Uni-)0 917 y(v)o(ersal)c(quan)o(ti\014cation)g(\(usually\))g
  974. (describ)q(es)i(p)q(olymorphic)f(functional)g(ob)s(jects.)24
  975. b(Consider)17 b(the)g(fol-)0 973 y(lo)o(wing)f(example:)0 1073
  976. y Fc(id)24 b(::)f(a)h(->)f(a)0 1130 y(id)h(x)f(=)h(x)0 1186
  977. y(f)g(::)f(Dynamic)0 1243 y(f)h(=)f(toDynamic)g(id)0 1343 y
  978. Fh(Here)16 b(the)f(t)o(yp)q(e)g(tag)g(in)h(the)f(dynamic)h(v)m(alue)h(asso)q
  979. (ciated)e(with)h Fc(f)f Fh(con)o(tains)g(a)g(univ)o(ersally)i(quan)o
  980. (ti\014ed)0 1399 y(t)o(yp)q(e)e(v)m(ariable.)0 1466 y(When)h(part)e(of)h(an)h
  981. (ob)s(ject's)e(t)o(yp)q(e)h(is)h(b)q(ound)h(in)f(an)f(outer)g(t)o(yp)q(e)g
  982. (en)o(vironmen)o(t,)h(existen)o(tial)g(quan)o(ti\014-)0 1523
  983. y(cation)f(ma)o(y)g(b)q(e)h(required)g(to)f(describ)q(e)h(the)g(t)o(yp)q(e)f
  984. (of)g(the)g(ob)s(ject.)0 1623 y Fc(f)24 b(::)f(a)h(->)g(Dynamic)0
  985. 1679 y(f)g(x)f(=)h(toDynamic)f(x)0 1779 y Fh(In)16 b(this)g(example,)f(the)h
  986. (dynamic)g(v)m(alue)g(captures)g(a)f(parameter)f(of)h(arbitrary)g(t)o(yp)q(e)
  987. g(passed)h(to)e Fc(f)p Fh(.)20 b(In)0 1836 y(the)c(previous)g(example)h(the)e
  988. (t)o(yp)q(e)h(of)f(the)h Fc(id)f Fh(function)i(is)f(completely)h(kno)o(wn)f
  989. (at)f(place)h Fc(toDynamic)0 1892 y Fh(is)h(called.)23 b(Here,)16
  990. b Fc(x)g Fh(is)h(b)q(ound)g(to)e(an)h(ob)s(ject)f(of)h(a)g(t)o(yp)q(e)g
  991. (unkno)o(wn)g(at)f(compile)j(time.)23 b(The)16 b(t)o(yp)q(e)g(tag)0
  992. 1949 y(within)h(the)e(created)h(dynamic)g(th)o(us)f(cannot)h(mak)o(e)f(use)g
  993. (of)g(a)g(univ)o(ersally)j(quan)o(ti\014ed)e(t)o(yp)q(e)g(v)m(ariable)0
  994. 2005 y(as)f(the)g(dynamic)h(v)m(alue)h(holds)f(a)e(sp)q(eci\014c)j(concrete)f
  995. (t)o(yp)q(e.)0 2072 y(The)e(issue)h(of)e(existen)o(tial)i(t)o(yp)q(e)f(quan)o
  996. (ti\014cation)h(has)e(b)q(een)i(dealt)g(with)f(in)h(a)e(n)o(um)o(b)q(er)h(of)
  997. g(w)o(a)o(ys.)k(In)c([3],)0 2129 y(capture)f(of)f(existen)o(tially)j(quan)o
  998. (ti\014ed)f(t)o(yp)q(es)f(is)g(forbidden.)21 b(This)13 b(is)h(extended)g(b)o
  999. (y)f(Lero)o(y)f(and)h(Maun)o(y)0 2185 y([2)o(])i(to)f(allo)o(w)h(existen)o
  1000. (tial)g(t)o(yp)q(es)g(to)f(b)q(e)i(represen)o(ted)f(in)g(the)g(tags)f(of)g
  1001. (dynamic)i(v)m(alues.)k(Ho)o(w)o(ev)o(er,)14 b(the)0 2241 y(added)j
  1002. (expressiv)o(eness)h(they)f(ac)o(hiev)o(e)g(seems)g(to)f(b)q(e)h(of)g(little)
  1003. h(practical)f(v)m(alue.)26 b(W)l(e)17 b(will)h(a)o(v)o(oid)f(this)0
  1004. 2298 y(issue)e(at)f(presen)o(t;)h(for)f(no)o(w)g(w)o(e)g(will)i(assume)e
  1005. (that)g(t)o(yp)q(e)h(reconstruction)f(of)h(p)q(olymorphic)h(ob)s(jects)d(is)0
  1006. 2354 y(p)q(ossible.)21 b(This)13 b(eliminates)i(the)e(need)h(for)e(existen)o
  1007. (tial)i(quan)o(ti\014cation)g(in)g(t)o(yp)q(e)f(tags.)18 b(W)l(a)o(ys)12
  1008. b(to)g(either)0 2411 y(p)q(erform)18 b(or)g(a)o(v)o(oid)f(t)o(yp)q(e)i
  1009. (reconstruction)f(are)g(presen)o(ted)h(in)f(section)h(6.)29
  1010. b(In)18 b(the)h(ab)q(o)o(v)o(e)e(example)i(a)0 2467 y(t)o(yp)q(e)f(for)f(the)
  1011. h(parameter)f Fc(x)g Fh(w)o(ould)h(someho)o(w)f(b)q(e)i(computed)f(at)f(run)h
  1012. (time)g(and)g(inserted)g(in)o(to)g(the)0 2524 y(dynamic.)28
  1013. b(This)18 b(problem)g(do)q(es)g(not)g(arise)f(in)i(dynamicly)g(t)o(yp)q(ed)f
  1014. (languages)g(since)g(the)g(v)m(alue)h(of)e Fc(x)0 2580 y Fh(w)o(ould)f
  1015. (include)h(t)o(yp)q(e)e(information.)0 2647 y(The)f(in)o(v)o(erse)g(of)f
  1016. Fc(toDynamic)f Fh(is)i Fc(fromDynamic)n Fh(.)20 b(This)14 b(un)o(wraps)f(a)g
  1017. (dynamic)h(v)m(alue)h(and)f(ensures)g(that)0 2704 y(the)20
  1018. b(t)o(yp)q(e)g(tag)e(of)i(the)f(dynamic)i(is)f(compatible)h(with)f(\(no)g
  1019. (less)g(general)g(than\))f(the)h(t)o(yp)q(e)g(inferred)p eop
  1020. %%Page: 4 5
  1021. bop 0 50 a Fi(3)45 b(D)o(YNAMIC)15 b(TYPING)1283 b Fh(4)0 199
  1022. y(during)19 b(static)e(t)o(yp)q(e)h(analysis.)29 b(Lik)o(e)19
  1023. b Fc(toDynamic)o Fh(,)f Fc(fromDynamic)e Fh(is)i(not)g(actually)h(a)e
  1024. (function)i(but)0 256 y(rather)c(a)f(sp)q(ecial)j(construct.)j(It)15
  1025. b(has)g(the)h(follo)o(wing)g(t)o(yp)q(e)f(b)q(eha)o(vior:)0
  1026. 360 y Fc(fromDynamic)22 b(::)i(Dynamic)f(->)g(a)0 464 y Fh(The)14
  1027. b(con)o(text)f(in)h(whic)o(h)g(the)g Fc(fromDynamic)e Fh(app)q(ears)h
  1028. (determines)i(the)e(p)q(ermissible)j(t)o(yp)q(e)e(tags)f(in)h(the)0
  1029. 521 y(dynamic)h(v)m(alue.)20 b(The)15 b(t)o(yp)q(e)f(of)f(the)h(dynamic)h(m)o
  1030. (ust)e(b)q(e)i(at)e(least)h(as)g(general)g(as)g(the)g(t)o(yp)q(e)g(inferred)h
  1031. (at)0 577 y(compile)i(time.)j(When)15 b(this)h(is)g(not)f(the)g(case,)g(a)g
  1032. (run)o(time)g(t)o(yp)q(e)g(error)g(o)q(ccurs.)20 b(F)l(or)15
  1033. b(example,)g(in)0 682 y Fc(x)24 b(::)f(Int)0 738 y(x)h(=)f(fromDynamic)g(y)0
  1034. 842 y Fh(the)15 b(t)o(yp)q(e)h(in)g(the)f(dynamic)h Fc(y)f
  1035. Fh(m)o(ust)g(indicate)h(that)f(it)g(con)o(tains)h(an)f Fc(Int)o
  1036. Fh(.)0 909 y(A)i(more)g(con)o(v)o(en)o(tional)g(w)o(a)o(y)f(of)g(un)o
  1037. (wrapping)i(dynamic)g(v)m(alues)g(uses)f(pattern)g(matc)o(hing.)25
  1038. b(W)l(e)17 b(aug-)0 966 y(men)o(t)c(standard)g(Hask)o(ell)i(patterns)e(with)g
  1039. Fc(pat)24 b(::)f(type)13 b Fh(to)g(matc)o(h)g(dynamic)h(v)m(alues)h(with)f
  1040. (the)f(giv)o(en)0 1022 y(t)o(yp)q(e.)26 b(One)18 b(imp)q(ortan)o(t)f
  1041. (restriction)g(on)h(dynamic)g(pattern)e(matc)o(hing)i(is)f(required:)25
  1042. b(t)o(yp)q(e)18 b(v)m(ariables)0 1079 y(within)i(the)f(signatures)g(cannot)g
  1043. (propagate)f(outside)h(of)g(the)g(corresp)q(onding)h(clause.)32
  1044. b(The)19 b(follo)o(w-)0 1135 y(ing)f(generates)g(a)f(compile)i(time)g(t)o(yp)
  1045. q(e)e(error)h(since)g(a)g(t)o(yp)q(e)g(v)m(ariable)h(un)o(wrapp)q(ed)f(b)o(y)
  1046. g(the)g(dynamic)0 1192 y(escap)q(es:)0 1296 y Fc(f)24 b(::)f(Text)h(a)f(=>)h
  1047. (Dynamic)f(->)g(a)0 1352 y(f)h(\(x)f(::)h(Text)f(a)h(=>)g(a\))f(=)h(x)0
  1048. 1457 y Fh(The)15 b(follo)o(wing)h(w)o(ould)g(b)q(e)g(allo)o(w)o(ed:)0
  1049. 1561 y Fc(f)24 b(::)f(Dynamic)g(->)h(String)0 1617 y(f)g(\(x)f(::)h(Text)f(a)
  1050. h(=>)g(a\))f(=)h(show)f(x)48 b(--)23 b(show)h(::)f(Text)h(a)f(=>)h(a)g(->)f
  1051. (String)0 1722 y Fh(Here,)17 b(the)f(t)o(yp)q(e)h(v)m(ariable)h(created)f(b)o
  1052. (y)f(pattern)g(matc)o(hing)h(against)f(the)h Fc(Dynamic)e Fh(do)q(es)i(not)f
  1053. (escap)q(e)0 1778 y Fc(f)f Fh(and)g(the)h(restriction)f(is)h(not)f(violated.)
  1054. 0 1845 y(This)k(restriction)g(is)f(due)h(to)f(the)g(fact)g(that)f(this)i
  1055. (sort)e(of)h(pattern)g(matc)o(hing)g(creates)g(existen)o(tially)0
  1056. 1902 y(quan)o(ti\014ed)e(t)o(yp)q(es.)k(Suc)o(h)c(t)o(yp)q(es)f(are)g(only)h
  1057. (v)m(alid)h(lo)q(cally)f(and)g(cannot)f(escap)q(e.)0 1969 y(The)22
  1058. b Fc(fromDynamic)e Fh(construct)i(do)q(es)g(not)g(ha)o(v)o(e)f(this)h
  1059. (restriction.)41 b(Calls)22 b(to)f Fc(fromDynamic)g Fh(ma)o(y)0
  1060. 2025 y(app)q(ear)c(in)g(a)g(con)o(text)f(con)o(taining)h(existen)o(tially)i
  1061. (quan)o(ti\014ed)f(t)o(yp)q(e)e(v)m(ariables,)i(but)f(a)g(run)o(time)g(error)
  1062. 0 2081 y(will)23 b(result)e(unless)i(the)e(run)o(time)h(instan)o(tiation)f
  1063. (of)g(the)g(existen)o(tially)i(quan)o(ti\014ed)f(t)o(yp)q(e)g(v)m(ariables)0
  1064. 2138 y(exactly)16 b(matc)o(hes)e(the)i(t)o(yp)q(e)f(of)g(the)g
  1065. Fc(Dynamic)f Fh(v)m(alue.)21 b(In)16 b(the)f(function)0 2242
  1066. y Fc(addOneDynamic)22 b(::)i(Num)f(a)h(=>)f(a)h(->)g(Dynamic)f(->)g(a)0
  1067. 2299 y(addOneDynamic)f(x)i(d)g(=)f(x)h(+)g(fromDynamic)e(d)0
  1068. 2403 y Fh(the)13 b(dynamic)h Fc(d)f Fh(m)o(ust)g(b)q(e)g(con)o(tain)h(the)f
  1069. (same)g(t)o(yp)q(e)g(as)g(the)g(parameter)f Fc(x)p Fh(.)19
  1070. b(Since)c(in)f(Hask)o(ell)g(addition)0 2459 y(is)j(de\014ned)g(in)g
  1071. (conjunction)g(with)f(the)h(class)f(system,)f(it)i(has)f(the)g(t)o(yping)g
  1072. Fc(Num)24 b(a)f(=>)h(a)g(->)f(a)h(->)g(a)o Fh(.)0 2516 y(This)17
  1073. b(function)h(adds)e(n)o(umerics)i(of)e(an)o(y)g(sort)g(as)g(long)h(as)f(the)h
  1074. (dynamic)g(is)g(the)g(same)f(n)o(umeric)i(t)o(yp)q(e)0 2572
  1075. y(as)d(the)g(parameter)g Fc(x)o Fh(.)0 2639 y(The)k Fc(fromDynamic)d
  1076. Fh(construct)i(cannot)h(b)q(e)g(used)g(in)g(situations)f(where)h(the)f
  1077. (compile)i(time)f(t)o(yp)q(e)f(is)0 2696 y(more)d(general)g(than)h(the)f(run)
  1078. o(time)g(t)o(yp)q(e)h(exp)q(ected.)21 b(In)16 b(the)f(follo)o(wing)p
  1079. eop
  1080. %%Page: 5 6
  1081. bop 0 50 a Fi(4)45 b(THE)15 b(ST)l(A)l(TIC)h(TYPE)f(SYSTEM)g(A)l(T)g(R)o
  1082. (UNTIME)765 b Fh(5)0 199 y Fc(bad)23 b(::)h(Dynamic)f(->)h(Dynamic)e(->)i
  1083. (Dynamic)0 256 y(bad)f(x)h(y)g(=)g(toDynamic)e(\(fromDynamic)g(x)i(+)g
  1084. (fromDynamic)e(y\))0 348 y Fh(the)c(calls)g(to)f Fc(fromDynamic)f
  1085. Fh(app)q(ear)i(in)g(a)g(con)o(text)f(with)h(the)f(t)o(yping)h
  1086. Fc(Num)24 b(a)f(=>)h(a)p Fh(.)j(The)18 b(t)o(yp)q(es)f(in)0
  1087. 404 y(the)c(dynamics)h(m)o(ust)f(b)q(e)h(at)e(least)i(as)f(general,)g(so)g
  1088. (no)g(practical)h(t)o(yp)q(e)g(is)f(allo)o(w)o(able)h(for)f
  1089. Fc(x)g Fh(and)g Fc(y)p Fh(.)19 b(This)0 460 y(problem)d(can)f(b)q(e)h(a)o(v)o
  1090. (oided)g(using)f(pattern)g(matc)o(hing:)0 552 y Fc(good)23
  1091. b(::)h(Dynamic)f(->)g(Dynamic)g(->)h(Dynamic)0 609 y(good)f(\(x)h(::)f(Num)h
  1092. (a)g(=>)f(a\))h(y)g(=)f(toDynamic)g(\(x)h(+)f(fromDynamic)g(y\))0
  1093. 701 y Fh(Here)14 b(the)g(v)m(alue)i(in)e Fc(x)g Fh(is)h(op)q(ened)g(up)f
  1094. (using)h(a)f(pattern)f(matc)o(h)g(whic)o(h)i(creates)f(an)g(existen)o(tial)h
  1095. (t)o(yp)q(e)f(in)0 757 y(the)j(con)o(text)f(where)i Fc(fromDynamic)d
  1096. Fh(is)j(used.)25 b(The)18 b(t)o(yp)q(e)f(within)h Fc(y)f Fh(is)g(then)g
  1097. (compared)g(to)g(the)g(t)o(yp)q(e)0 814 y(tak)o(en)e(from)f
  1098. Fc(x)h Fh(as)g(exp)q(ected.)21 b(The)16 b(returned)f(dynamic)h(will)h(ha)o(v)
  1099. o(e)e(this)g(same)g(t)o(yp)q(e.)0 881 y(The)i(seman)o(tics)h(c)o(hosen)f(for)
  1100. f Fc(fromDynamic)g Fh(are)h(in)h(con)o(trast)e(with)h(other)g(approac)o(hes)g
  1101. (to)f(dynamic)0 937 y(t)o(yping.)j(While)13 b(previous)f(w)o(ork)e(with)i
  1102. (dynamic)g(t)o(yping)g(pro)o(vides)f Fc(toDynamic)g Fh(and)g(dynamic)h
  1103. (pattern)0 993 y(matc)o(hing,)17 b(the)g(use)g(of)f Fc(fromDynamic)g
  1104. Fh(to)g(allo)o(w)h(dynamic)h(v)m(alues)g(to)e(re-in)o(tegrate)g(in)i(existen)
  1105. o(tially)0 1050 y(t)o(yp)q(ed)11 b(situations)f(is)h(no)o(v)o(el.)19
  1106. b(Although)11 b(the)f(di\013erence)i(b)q(et)o(w)o(een)e(the)h(seman)o(tics)f
  1107. (of)g(pattern)g(matc)o(hing)0 1106 y(and)16 b Fc(fromDynamic)f
  1108. Fh(in)i(un)o(wrapping)g(dynamic)g(v)m(alues)g(ma)o(y)f(not)f(seem)i(ob)o
  1109. (vious,)f(eac)o(h)g(is)h(necessary)0 1163 y(in)f(di\013eren)o(t)f
  1110. (situations.)0 1314 y Fe(4)69 b(The)23 b(Static)e(T)n(yp)r(e)i(System)f(at)h
  1111. (Run)n(time)0 1426 y Fh(The)c(tag)f(created)g(b)o(y)h(the)g
  1112. Fc(toDynamic)e Fh(function)j(enco)q(des)f(compile)h(time)f(t)o(yp)q(e)g
  1113. (information.)31 b(F)l(or)0 1483 y(this)22 b(information)g(to)f(b)q(e)h
  1114. (useful)g(at)f(run)h(time,)h(the)f(compile)h(time)f(t)o(yp)q(e)f(en)o
  1115. (vironmen)o(t)h(m)o(ust)f(b)q(e)0 1539 y(presen)o(t)e(during)g(execution.)31
  1116. b(While)20 b(the)e(compile)i(time)f(t)o(yp)q(e)g(en)o(vironmen)o(t)g(is)g
  1117. (usually)h(discarded)0 1596 y(b)q(efore)d(run)o(time)h(in)g(languages)f(with)
  1118. h(static)f(t)o(yp)q(e)g(systems,)g(it)g(is)h(commonly)f(part)g(of)f(the)i
  1119. (run)o(time)0 1652 y(en)o(vironmen)o(t)d(in)i(dynamic)f(languages)f(suc)o(h)g
  1120. (as)g(Lisp.)0 1719 y(The)h(t)o(yp)q(e)f(en)o(vironmen)o(t)h(is)g(represen)o
  1121. (ted)f(at)g(run)o(time)h(b)o(y)f(a)g(set)g(of)g(constan)o(ts)g(whic)o(h)h
  1122. (corresp)q(ond)g(to)0 1775 y(the)e(v)m(arious)g(t)o(yp)q(e)g(declarations.)20
  1123. b(In)14 b(Hask)o(ell,)h(the)e(follo)o(wing)i(abstract)e(t)o(yp)q(es)g(are)h
  1124. (used)g(to)f(represen)o(t)0 1832 y(the)22 b(t)o(yp)q(e)g(en)o(vironmen)o(t:)
  1125. 34 b Fc(DataType)o Fh(,)24 b Fc(Constructor)n Fh(,)g Fc(Class)o
  1126. Fh(,)f(and)g Fc(Instance)o Fh(.)40 b(The)22 b(t)o(yp)q(e)h(of)e(a)0
  1127. 1888 y Fc(Dynamic)d Fh(can)h(b)q(e)g(extracted)g(b)o(y)f(the)h
  1128. Fc(dType)f Fh(function.)32 b(It)18 b(returns)h(a)f(v)m(alue)i(of)f(t)o(yp)q
  1129. (e)g Fc(Signature)n Fh(,)0 1945 y(de\014ned)e(as)d(follo)o(ws:)0
  1130. 2037 y Fc(type)23 b(Context)g(=)h([Class])0 2093 y(data)f(Signature)g(=)h
  1131. (Signature)e([Context])h(Type)0 2150 y(data)g(Type)h(=)f(Tycon)h(DataType)e
  1132. ([Type])h(|)286 2206 y(Tyvar)h(Int)0 2298 y Fh(The)12 b Fc(Signature)f
  1133. Fh(constructor)g(in)o(tro)q(duces)i(n)o(um)o(b)q(ered,)g(univ)o(ersally)h
  1134. (quan)o(ti\014ed)f(t)o(yp)q(e)f(v)m(ariables)i(with)0 2354
  1135. y(class)24 b(constrain)o(ts,)h(one)f(for)g(eac)o(h)g(elemen)o(t)g(in)h(the)f
  1136. (list)h(of)e(con)o(texts.)46 b(The)24 b(de\014nitions)h(of)f(the)0
  1137. 2411 y Fc(DataType)o Fh(,)f Fc(Constructor)n Fh(,)g Fc(Class)p
  1138. Fh(,)g(and)f Fc(Instance)e Fh(are)i(not)f(sho)o(wn)g(here:)34
  1139. b(these)22 b(are)f(complex)0 2467 y(t)o(yp)q(es)15 b(whose)g(in)o(ternal)i
  1140. (structure)e(is)h(accessed)f(through)g(a)g(set)g(of)g(help)q(er)i(functions.)
  1141. k(There)16 b(are)f(to)q(o)0 2524 y(man)o(y)e(suc)o(h)h(functions)h(to)e(list)
  1142. h(here;)g(w)o(e)f(will)j(in)o(tro)q(duce)e(them)g(only)g(as)f(needed.)21
  1143. b(A)14 b(naming)g(con)o(v)o(en-)0 2580 y(tion)i(is)f(used)h(in)g(whic)o(h)g
  1144. (all)h(suc)o(h)e(function)h(b)q(egin)h(with)f Fc(d)p Fh(.)k(The)15
  1145. b(user)h(is)f(not)g(allo)o(w)o(ed)h(to)f(create)g(new)0 2637
  1146. y(data)g(t)o(yp)q(es,)f(classes,)i(or)e(instances)i(at)f(run)o(time.)0
  1147. 2704 y(These)h(functions)g(retriev)o(e)f(the)g(t)o(yp)q(e)g(of)g(a)g(dynamic)
  1148. h(v)m(alue:)p eop
  1149. %%Page: 6 7
  1150. bop 0 50 a Fi(5)45 b(MANIPULA)l(TING)16 b(D)o(YNAMIC)f(V)-5
  1151. b(ALUES)902 b Fh(6)0 199 y Fc(dType)23 b(::)h(Dynamic)f(->)g(Signature)47
  1152. b(--)23 b(Get)h(the)f(type)h(of)f(a)h(dynamic)0 256 y(dConstructor)e(::)i
  1153. (Dynamic)f(->)g(Constructor)47 b(--)23 b(Get)h(the)f(constructor)f
  1154. (associated)620 312 y(--)i(with)f(the)h(data)f(value)g(in)h(a)g(dynamic)0
  1155. 406 y Fh(The)14 b Fc(dType)f Fh(function)h(merely)h(returns)e(the)h(tag)f(in)
  1156. h(a)f(dynamic)i(v)m(alue.)20 b(It)14 b(do)q(es)g(not)f(force)h(ev)m(aluation)
  1157. 0 462 y(of)h(the)h(ob)s(ject)f(captured)h(b)o(y)f(the)h(dynamic.)22
  1158. b(In)16 b(con)o(trast,)e Fc(dConstructor)g Fh(ev)m(aluates)i(the)g(captured)0
  1159. 519 y(v)m(alue)g(and)g(returns)f(the)g(data)g(constructor)f(asso)q(ciated)i
  1160. (with)f(the)g(v)m(alue.)0 586 y(While)k(the)e(a)o(v)m(ailabilit)o(y)j(of)d(t)
  1161. o(yp)q(e)g(information)h(during)g(execution)h(is)f(traditional)g(in)g
  1162. (dynamic)g(lan-)0 642 y(guages,)c(the)i(the)f(usefulness)i(of)d(this)i(t)o
  1163. (yp)q(e)f(information)h(has)f(not)f(b)q(een)j(generally)f(recognized.)0
  1164. 794 y Fe(5)69 b(Manipulating)22 b(Dynamic)g(V)-6 b(alues)0
  1165. 906 y Fh(While)14 b Fc(toDynamic)e Fh(and)g Fc(fromDynamic)g
  1166. Fh(allo)o(w)h(con)o(v)o(ersion)f(in)o(to)h(and)g(out)f(of)h
  1167. Fc(Dynamic)o Fh(,)g(the)f(abilit)o(y)i(of)0 962 y(a)f(program)g(to)g(p)q
  1168. (erform)g(op)q(erations)h(within)h(the)e(dynamic)i(domain)f(is)g(of)f(great)g
  1169. (imp)q(ortance.)20 b(These)0 1019 y(op)q(erations)13 b(allo)o(w)g(dynamic)g
  1170. (ob)s(jects)f(to)g(b)q(e)h(safely)g(manipulated)h(from)e(outside)h(the)g(con)
  1171. o(text)f(of)g(their)0 1075 y(lo)q(cal)k(t)o(yp)q(e)g(system.)0
  1172. 1142 y(F)l(or)i(an)h(algebraic)h(sum)f(of)g(pro)q(ducts)g(data)f(t)o(yp)q(e,)
  1173. i(t)o(w)o(o)e(dynamic)i(op)q(erations)f(are)g(a)o(v)m(ailable:)29
  1174. b(con-)0 1199 y(struction)19 b(and)g(selection.)33 b(The)19
  1175. b(selection)h(op)q(eration)g(destructures)f(a)f(dynamic)i(v)m(alue)h(in)o(to)
  1176. e(a)f(set)0 1255 y(of)e(dynamic)h(comp)q(onen)o(ts,)f(eac)o(h)h(carrying)f
  1177. (the)g(appropriate)h(t)o(yp)q(e.)23 b(Selection)18 b(is)f(accomplished)h(b)o
  1178. (y)0 1312 y Fc(dSlots)o Fh(:)0 1405 y Fc(dSlots)23 b(::)h(Dynamic)f(->)g
  1179. ([Dynamic])0 1499 y Fh(Construction)14 b(creates)g(a)g(new)h(dynamic)g(v)m
  1180. (alue.)21 b(Eac)o(h)14 b(v)m(alue)h(of)f(t)o(yp)q(e)g Fc(Constructor)f
  1181. Fh(has)h(an)g(asso)q(ci-)0 1556 y(ated)h(construction)g(function.)21
  1182. b(This)16 b(function)g(is)g(retriev)o(ed)f(b)o(y)h(the)f Fc(dMake)f
  1183. Fh(function:)0 1649 y Fc(dMake)23 b(::)h(Constructor)e(->)i([Dynamic])e(->)i
  1184. (Dynamic)0 1743 y Fh(The)d Fc(dMake)f Fh(function)i(m)o(ust)e(p)q(erform)h
  1185. (limited)i(t)o(yp)q(e)e(inference)h(to)e(construct)h(a)g(correctly)g(t)o(yp)q
  1186. (ed)0 1800 y(result.)28 b(T)o(yp)q(e)18 b(errors)f(ma)o(y)g(o)q(ccur:)26
  1187. b(these)18 b(are)g(manifested)g(as)f(a)h(sp)q(ecial)i(data)d(t)o(yp)q(e)h
  1188. (enco)q(ded)h(as)e(a)0 1856 y Fc(Dynamic)o Fh(:)0 1950 y Fc(data)23
  1189. b(DynamicError)g(=)g(DynamicError)f(String)0 2043 y Fh(The)15
  1190. b(string)h(con)o(tains)f(an)g(error)g(message)f(from)h(the)g(t)o(yp)q(e)g(c)o
  1191. (hec)o(k)o(er.)0 2110 y(The)i Fc(dConstructor)o Fh(,)g Fc(dSlots)o
  1192. Fh(,)g(and)g Fc(dMake)g Fh(functions)h(allo)o(w)f(v)m(alues)h(of)f(arbitrary)
  1193. f(t)o(yp)q(e)h(to)g(b)q(e)h(ex-)0 2167 y(amined)e(or)f(created)g(in)h(a)f
  1194. (dynamic)h(con)o(text.)0 2234 y(Another)j(basic)h(op)q(eration)f(on)g
  1195. (dynamic)h(v)m(alues)g(is)g(the)f(dynamic)h(function)g(call.)33
  1196. b(This)20 b(applies)g(a)0 2290 y(function)h(\(enco)q(ded)h(as)e(a)h
  1197. Fc(Dynamic)o Fh(\))f(to)g(a)g(list)i(of)e(dynamic)i(argumen)o(ts.)35
  1198. b(F)l(unction)22 b(calling)g(also)0 2347 y(p)q(erforms)d(t)o(yp)q(e)h
  1199. (inference:)30 b(the)19 b(function)h(and)g(argumen)o(t)f(t)o(yp)q(es)g(m)o
  1200. (ust)g(agree)g(and)h(a)f(result)h(t)o(yp)q(e)0 2403 y(m)o(ust)15
  1201. b(b)q(e)g(determined.)22 b(The)15 b(function)0 2497 y Fc(dynamicApply)22
  1202. b(::)i(Dynamic)f(->)g([Dynamic])g(->)h(Dynamic)0 2591 y Fh(p)q(erforms)c
  1203. (function)i(application)g(in)g(the)e(dynamic)i(domain.)36 b(It)21
  1204. b(also)g(runs)g(the)f(t)o(yp)q(e)h(c)o(hec)o(k)o(er)g(to)0
  1205. 2647 y(compute)15 b(the)g(result)h(t)o(yp)q(e)f(of)g(the)g(application.)21
  1206. b(The)16 b(result)f(of)g(dynamic)h(application)h(is)e(a)g(v)m(alue)h(of)0
  1207. 2704 y(t)o(yp)q(e)f(DynamicError)g(whenev)o(er)h(an)o(y)e(t)o(yp)q(e)i
  1208. (mismatc)o(h)f(o)q(ccurs.)p eop
  1209. %%Page: 7 8
  1210. bop 0 50 a Fi(6)45 b(TYPE)15 b(RECONSTR)o(UCTION)1124 b Fh(7)0
  1211. 199 y(As)19 b(Hask)o(ell)h(is)f(a)f(purely)i(functional)g(language,)g
  1212. (function)g(calling)g(to)f(impure)g(functions)h(m)o(ust)e(b)q(e)0
  1213. 256 y(handled)f(a)e(bit)g(di\013eren)o(tly)l(.)21 b(The)16
  1214. b(function)0 360 y Fc(dynamicApplyIO)22 b(::)i(Dynamic)e(->)i([Dynamic])f(->)
  1215. g(IO)h(Dynamic)0 464 y Fh(calls)17 b(functions)g(in)g(the)f
  1216. Fc(IO)g Fh(monad.)23 b(The)16 b Fc(IO)g Fh(monad)g(is)g(used)h(b)o(y)f(Hask)o
  1217. (ell)h(to)f(sequence)h(op)q(erations)0 521 y(on)e(the)g(global)h(state;)d
  1218. (the)j(function)f(called)i(b)o(y)e Fc(dynamicApplyIO)e Fh(m)o(ust)h(also)h(b)
  1219. q(e)h(in)g(the)f Fc(IO)g Fh(monad.)0 675 y Fe(6)69 b(T)n(yp)r(e)23
  1220. b(Reconstruction)0 786 y Fh(Reconstructing)d(the)g(t)o(yp)q(e)f(of)g(a)g(p)q
  1221. (olymorphic)i(ob)s(ject)d(at)h(run)o(time)g(is)h(a)f(problem)h(that)f(has)g
  1222. (b)q(een)0 843 y(studied)k(in)f(the)g(con)o(text)f(of)g(memory)g(managemen)o
  1223. (t)g(and)h(debuggers.)40 b(The)22 b(simplest)g(approac)o(h)0
  1224. 899 y(is)g(to)f(use)g(run)o(time)h(tags)e(ev)o(en)i(in)g(a)f(staticly)h(t)o
  1225. (yp)q(ed)g(language.)39 b(Another)21 b(is)h(to)f(infer)h(t)o(yp)q(es)f(on)0
  1226. 956 y(demand)15 b(b)o(y)f(searc)o(hing)h(through)f(the)h(run)o(time)g(stac)o
  1227. (k)e(for)h(the)h(p)q(oin)o(t)g(at)e(whic)o(h)j(a)e(p)q(olymorphic)i(t)o(yp)q
  1228. (e)0 1012 y(is)c(instan)o(tiated[5].)18 b(In)13 b(Hask)o(ell,)g(the)f(class)g
  1229. (system)g(supplies)i(a)d(simple)i(means)f(of)g(reco)o(v)o(ering)g(run)o(time)
  1230. 0 1069 y(t)o(yp)q(e)j(information.)20 b(The)c(class)0 1173
  1231. y Fc(class)23 b(Typable)g(a)h(where)48 1230 y(typeof)f(::)g(a)h(->)g
  1232. (Signature)0 1334 y Fh(can)15 b(b)q(e)g(attac)o(hed)f(to)f(existen)o(tially)k
  1233. (quan)o(ti\014ed)e(t)o(yp)q(e)g(v)m(ariables)g(enabling)i(the)d(reco)o(v)o
  1234. (ery)g(of)g(the)h(asso-)0 1390 y(ciated)i(t)o(yp)q(e)g(at)f(run)o(time.)24
  1235. b(All)17 b(t)o(yp)q(es)g(are)f(placed)i(in)o(to)e(this)h(class)g(implicitly)j
  1236. (and)c(the)h(appropriate)0 1447 y Fc(typeof)i Fh(function)h(deriv)o(ed)h(b)o
  1237. (y)e(the)h(compiler.)35 b(The)20 b(class)g(mec)o(hanism)g(will)h(then)f
  1238. (propagate)f(the)0 1503 y(correct)f(t)o(yp)q(e)h(signature)g(where)f(it)h(is)
  1239. g(needed)h(without)f(further)f(action)h(b)o(y)g(the)f(user.)31
  1240. b(While)20 b(this)0 1560 y(lo)q(oks)13 b(suspiciously)i(lik)o(e)g(a)d
  1241. (retreat)g(to)h(fully)h(tagged)e(data)h(ob)s(jects,)f(there)h(is)h(a)e
  1242. (signi\014can)o(t)i(di\013erence.)0 1616 y(T)l(ags)h(are)h(not)f(ph)o
  1243. (ysically)j(attac)o(hed)d(to)g(the)h(v)m(alues;)h(the)f(class)g(system)f
  1244. (will)j(main)o(tain)e(the)g(tag)f(as)g(a)0 1673 y(separate)g(structure.)k
  1245. (One)d(tag)f(v)m(alue)h(ma)o(y)e(apply)i(to)f(man)o(y)g(data)f(v)m(alues.)21
  1246. b(F)l(or)15 b(example,)h(in)0 1777 y Fc(f)24 b(::)f(Typable)g(a)h(=>)g([a])f
  1247. (->)h([a])f(->)h([a])0 1881 y Fh(a)15 b(single)i(tag)e(v)m(alue)i(passed)f
  1248. (to)f Fc(f)g Fh(w)o(ould)h(iden)o(tify)h(the)f(p)q(olymorphic)h(comp)q(onen)o
  1249. (ts)f(of)f(all)i(list)f(struc-)0 1938 y(tures)j(used)g(b)o(y)g
  1250. Fc(f)p Fh(.)31 b(In)20 b(con)o(trast,)e(full)i(dynamic)g(t)o(yping)f(w)o
  1251. (ould)h(require)g(a)e(tag)g(attac)o(hed)h(to)f(ev)o(ery)0 1994
  1252. y(elemen)o(t)e(of)f(eac)o(h)g(list.)0 2061 y(The)22 b(use)g(of)f
  1253. Fc(typable)f Fh(has)h(a)h(few)f(dra)o(wbac)o(ks,)h(ho)o(w)o(ev)o(er.)38
  1254. b(The)22 b Fc(Typable)e Fh(con)o(text)h(ma)o(y)g(app)q(ear)0
  1255. 2118 y(unexp)q(ectedly)e(when)e(dynamic)h(t)o(yping)f(is)h(used.)25
  1256. b(While)18 b(correct)f(con)o(text)f(propagation)g(will)j(o)q(ccur)0
  1257. 2174 y(without)14 b(user)g(in)o(terv)o(en)o(tion,)g(user)h(supplied)h(t)o(yp)
  1258. q(e)e(signatures)g(w)o(ould)h(need)f(to)g(men)o(tion)g Fc(Typable)f
  1259. Fh(in)0 2230 y(some)g(cases.)19 b(It)13 b(is)h(p)q(ossible)h(to)d(hide)j
  1260. Fc(Typable)d Fh(from)g(the)i(user)f(b)o(y)g(implicitly)j(propagating)d(this)h
  1261. (class)0 2287 y(in)19 b(for)f(all)h(p)q(olymorphic)h(v)m(alues.)30
  1262. b(This)19 b(complicates)g(function)h(calling)g(somewhat)d(and)i(ma)o(y)e(slo)
  1263. o(w)0 2343 y(do)o(wn)g(execution.)25 b(A)17 b(more)f(serious)i(dra)o(wbac)o
  1264. (k)e(is)h(that)f(abstraction)g(b)q(oundaries)i(are)f(brok)o(en:)23
  1265. b(the)0 2400 y(inner)c(structure)e(of)g(all)h(t)o(yp)q(es)g(are)f(passed)g
  1266. (around)h(at)f(run)o(time)g(is)h(a)o(v)m(ailable)h(to)e(the)h(user)f(through)
  1267. 0 2456 y(con)o(v)o(ersion)e(to)g(the)g Fc(Dynamic)f Fh(t)o(yp)q(e.)0
  1268. 2523 y(A)20 b(less)g(in)o(trusiv)o(e)g(approac)o(h)g(is)g(to)f(create)g(in)o
  1269. (v)o(en)o(t)h(new)g(t)o(yp)q(es)f(on)h(the)f(\015y)h(to)f(denote)h(the)g(t)o
  1270. (yp)q(e)f(of)0 2580 y(unkno)o(wn)e(ob)s(jects.)24 b(This)18
  1271. b(is)f(kno)o(wn)g(as)f(Sk)o(olemization)i(in)g(logic)f(and)g(the)g(newly)h
  1272. (generated)f(t)o(yp)q(es)0 2636 y(are)d(Sk)o(olem)g(constan)o(ts.)k(These)d
  1273. (Sk)o(olem)f(t)o(yp)q(es)g(ma)o(y)f(b)q(e)i(asso)q(ciated)f(with)g(t)o(yp)q
  1274. (e)g(classes)h(in)f(the)g(same)0 2693 y(manner)h(as)g(ordinary)g(t)o(yp)q
  1275. (es.)20 b(In)c(the)f(function)p eop
  1276. %%Page: 8 9
  1277. bop 0 50 a Fi(7)45 b(IMPLEMENT)l(A)l(TION)16 b(ISSUES)1105
  1278. b Fh(8)0 199 y Fc(f)24 b(::)f(Text)h(a)f(=>)h(a)g(->)f(Dynamic)0
  1279. 256 y(f)h(x)f(=)h(toDynamic)f(x)0 356 y Fh(the)d(Sk)o(olem)g(t)o(yp)q(e)g
  1280. (generated)g(to)f(denote)h(the)g(t)o(yp)q(e)f(of)h Fc(x)f Fh(will)j(b)q(e)e
  1281. (a)g(mem)o(b)q(er)g(of)f(the)h(class)g Fc(Text)o Fh(.)0 413
  1282. y(The)d(dictionary)g(passed)g(to)f Fc(f)h Fh(is)g(captured)g(in)g(the)g(new)g
  1283. Fc(Datatype)f Fh(ob)s(ject)g(created)g(b)o(y)h(the)g(call)h(to)0
  1284. 469 y Fc(toDynamic)o Fh(.)k(A)16 b(dynamic)h(created)g(b)o(y)f
  1285. Fc(f)g Fh(can)g(b)q(e)h(used)f(in)h(an)o(y)f(situation)g(requiring)i(a)e(v)m
  1286. (alue)h(in)g(the)0 526 y(class)e Fc(Text)p Fh(.)k(While)e(a)d(Sk)o(olem)h(t)o
  1287. (yp)q(e)g(do)q(es)h(not)e(matc)o(h)g(the)h(actual)g(t)o(yp)q(e)g(of)g(the)g
  1288. (v)m(alue)h(it)f(is)g(assigned)0 582 y(to,)i(it)h(serv)o(es)f(b)q(oth)h(as)f
  1289. (a)g(con)o(tainer)h(to)e(hold)j(class)f(assertions)f(whic)o(h)h(accompan)o(y)
  1290. f(the)h(data)f(v)m(alue)0 639 y(and)h(as)g(a)g(mark)o(er)f(that)g(allo)o(ws)h
  1291. (ob)s(jects)g(created)g(with)g(the)h(same)e(sk)o(olem)h(t)o(yp)q(e)h(to)e(b)q
  1292. (e)i(recognized)0 695 y(later)c(as)g(sharing)g(a)g(common)g(t)o(yp)q(e.)20
  1293. b(The)c(follo)o(wing)f(function)h(captures)g(t)o(w)o(o)e(n)o(umerics:)0
  1294. 796 y Fc(capture)23 b(x)h(y)f(::)h(Num)f(a)h(=>)g(a)f(->)h(a)g(->)f
  1295. (\(Dynamic,Dynamic\))0 852 y(capture)g(x)h(y)f(=)h(\(toDynamic)f(x,toDynamic)
  1296. f(y\))0 953 y Fh(Since)17 b Fc(x)e Fh(and)h Fc(y)f Fh(are)g(declared)i(to)e
  1297. (ha)o(v)o(e)g(a)g(common)g(t)o(yp)q(e)h(b)o(y)f(the)h(t)o(yp)q(e)g(signature)
  1298. f(of)g Fc(capture)o Fh(,)g(only)0 1010 y(one)d(sk)o(olem)h(t)o(yp)q(e)f(is)h
  1299. (generated)f(and)h(this)g(t)o(yp)q(e)f(is)h(sa)o(v)o(ed)f(in)h(the)f(tag)g
  1300. (of)g(b)q(oth)g(dynamics.)20 b(This)13 b(allo)o(ws)0 1066 y(these)h(dynamics)
  1301. g(to)f(b)q(e)h(used)g(in)h(a)e(con)o(text)g(where)h(t)o(w)o(o)e(dynamics)i
  1302. (of)f(the)h(same)f(t)o(yp)q(e)h(are)f(necessary)l(,)0 1122
  1303. y(suc)o(h)j(as)e(the)i Fc(good)e Fh(function)i(presen)o(ted)g(earlier:)0
  1304. 1223 y Fc(good)23 b(::)h(Dynamic)f(->)g(Dynamic)g(->)h(Dynamic)0
  1305. 1280 y(good)f(\(x)h(::)f(Num)h(a)g(=>)f(a\))h(y)g(=)f(toDynamic)g(\(x)h(+)f
  1306. (fromDynamic)g(y\))0 1380 y Fh(When)17 b(Sk)o(olem)h(t)o(yp)q(es)f(are)f
  1307. (used,)i(t)o(yp)q(e)f(signatures)g(pla)o(y)g(an)g(esp)q(ecially)j(imp)q
  1308. (ortan)o(t)d(role.)25 b(Without)0 1437 y(the)16 b(attac)o(hed)f(t)o(yp)q(e)g
  1309. (signature,)h(the)f Fc(capture)g Fh(function)h(w)o(ould)g(not)f(kno)o(w)g
  1310. (that)g(the)h(t)o(w)o(o)e(dynamics)0 1493 y(share)h(a)g(common)g(t)o(yp)q(e)g
  1311. (or)g(that)f(the)h(t)o(yp)q(e)h(is)f(in)h(class)g Fc(Num)p
  1312. Fh(.)0 1560 y(An)e(adv)m(an)o(tage)f(to)g(Sk)o(olemization)i(is)f(that)f(it)h
  1313. (acts)f(as)g(an)h(abstraction)f(barrier,)g(giving)i(a)e(lo)q(cal)i(name)0
  1314. 1617 y(to)g(an)g(unkno)o(wn)g(t)o(yp)q(e.)0 1684 y(Sk)o(olem)k(t)o(yp)q(es)h
  1315. (m)o(ust)e(b)q(e)i(propagated)e(through)h(pattern)g(matc)o(hing)g(against)g
  1316. (dynamics.)32 b(The)20 b(ex-)0 1740 y(isten)o(tial)i(t)o(yp)q(es)e(in)o(tro)q
  1317. (duced)i(b)o(y)f(pattern)f(matc)o(hing)h(are)f(found)h(at)f(run)o(time)h(in)h
  1318. (the)f(t)o(yp)q(e)f(tag)g(in)0 1797 y(the)d(dynamic)g(ob)s(ject.)24
  1319. b(In)17 b(the)f Fc(good)g Fh(function,)i(the)e(t)o(yp)q(e)h
  1320. Fc(a)f Fh(is)h(instan)o(tiated)g(b)o(y)g(pattern)f(matc)o(hing)0
  1321. 1853 y(against)d(the)h(\014rst)f(argumen)o(t.)18 b(The)c(t)o(yp)q(e)g(of)f
  1322. Fc(x)g Fh(th)o(us)g(corresp)q(onds)h(to)f(the)h(tag)e(of)h(the)h(dynamic)g
  1323. (whic)o(h)0 1909 y(binds)21 b Fc(x)p Fh(.)35 b(When)21 b Fc(toDynamic)d
  1324. Fh(is)j(called,)i(the)d(v)m(alue)h(of)f(this)h(tag)e(can)h(then)h(b)q(e)g
  1325. (used)f(in)h(the)g(new)0 1966 y(dynamic)16 b(v)m(alue,)g(preserving)g(the)f
  1326. (t)o(yp)q(e.)0 2033 y(While)f(Sk)o(olemization)f(is)g(used)f(during)h(t)o(yp)
  1327. q(e)g(inference)g(in)g([2],)f(these)g(t)o(yp)q(es)g(are)g(not)g(used)h(in)g
  1328. (the)f(tags)0 2089 y(of)j(dynamics)h(as)g(w)o(e)f(do.)21 b(The)15
  1329. b(utilit)o(y)i(of)e(Sk)o(olem)h(t)o(yp)q(es)g(deriv)o(es)g(from)f(the)g
  1330. (class)h(system)f(-)h(without)0 2146 y(t)o(yp)q(e)f(classes,)h(they)f(are)g
  1331. (m)o(uc)o(h)g(less)h(useful.)0 2213 y(Unfortunately)l(,)j(Sk)o(olemization)h
  1332. (results)e(in)h(a)f(loss)h(of)f(referen)o(tial)h(transparency)l(.)29
  1333. b(If)19 b(the)f Fc(capture)0 2269 y Fh(function)f(is)g(called)g(rep)q
  1334. (eatedly)h(with)e(the)h(same)e(argumen)o(ts)h(it)g(will)i(create)e(a)g(new)g
  1335. (Sk)o(olem)h(t)o(yp)q(e)f(in)0 2326 y(eac)o(h)j(pair)f(of)h(dynamics.)30
  1336. b(T)l(o)19 b(a)o(v)o(oid)f(this)h(problem,)g(dynamic)h(ob)s(jects)e(con)o
  1337. (taining)h(Sk)o(olem)g(t)o(yp)q(es)0 2382 y(should)d(not)f(ha)o(v)o(e)g
  1338. (their)h(t)o(yp)q(es)f(matc)o(hed)g(against)g(sk)o(olem)g(t)o(yp)q(es)g
  1339. (created)g(in)h(di\013eren)o(t)g(con)o(texts.)0 2535 y Fe(7)69
  1340. b(Implemen)n(tati)o(on)21 b(Issues)0 2647 y Fh(A)o(t)16 b(compile)i(time,)e
  1341. (the)h(primary)f(implemen)o(tation)i(issues)f(are)f(t)o(yp)q(e)h(capture)f
  1342. (and)h(the)f(insertion)h(of)0 2704 y(run)o(time)f(uni\014cation.)21
  1343. b(The)15 b(expression)i Fc(toDynamic)22 b(exp)15 b Fh(is)h(compiled)h(as)p
  1344. eop
  1345. %%Page: 9 10
  1346. bop 0 50 a Fi(7)45 b(IMPLEMENT)l(A)l(TION)16 b(ISSUES)1105
  1347. b Fh(9)0 199 y Fc(let)23 b(temp)h(=)f(exp)h(in)g(MkDynamic)e(\(captureType)g
  1348. (temp\))i(temp)0 298 y Fh(where)13 b Fc(MkDynamic)e Fh(is)i(the)f(in)o
  1349. (ternal)h(data)f(constructor)g(for)f(dynamics.)20 b(The)13
  1350. b Fc(captureType)e Fh(instructs)0 354 y(the)k(compiler)i(to)d(create)h(a)g
  1351. (run)o(time)h(t)o(yp)q(e)f(v)m(alue)h(from)f(the)g(t)o(yp)q(e)g(of)g
  1352. Fc(temp)p Fh(.)0 421 y(The)d(expansion)i(of)d Fc(fromDynamic)g
  1353. Fh(is)i(similar.)20 b(The)12 b(run)o(time)h(uni\014cation)h(function)f(tak)o
  1354. (es)e(t)o(w)o(o)g(t)o(yp)q(es:)0 477 y(a)f(`more)g(general')h(and)g(a)g
  1355. (`less)g(general')g(and)g(returns)f(either)i(an)f(error)f(indication)i(or)f
  1356. (a)f(list)i(of)e(bindings)0 534 y(of)h(t)o(yp)q(e)g(v)m(ariables)i(in)f(the)f
  1357. (`more)g(general')g(pattern.)18 b(The)12 b(expression)g Fc(fromDynamic)22
  1358. b(exp)11 b Fh(is)h(replaced)0 590 y(b)o(y)0 689 y Fc(temp)23
  1359. b(where)24 745 y(MkDynamic)f(tag)i(value)f(=)h(exp)24 802 y(temp)f(=)h(case)f
  1360. (unify)g(tag)h(\(captureType)e(temp\))h(of)239 858 y(UnifyError)f(->)i(error)
  1361. f("Dynamic)g(type)g(error")239 915 y(_)238 b(->)24 b(value)0
  1362. 1013 y Fh(P)o(attern)11 b(matc)o(hing)i(is)f(expanded)i(in)f(a)f(manner)g
  1363. (similar)i(to)e Fc(fromDynamic)e Fh(except)j(that)f(the)g(bindings)0
  1364. 1069 y(created)19 b(during)g(uni\014cation)i(ma)o(y)d(b)q(e)h(required)h(to)e
  1365. (instan)o(tiate)h(dictionaries.)33 b(Uni\014cation)20 b(errors)0
  1366. 1126 y(yield)c(failure)g(to)e(matc)o(h)g(instead)h(of)g(a)f(run)o(time)h
  1367. (error.)k(Supp)q(ort)c(to)f(lo)q(cate)h(dictionaries)i(at)d(run)o(time)0
  1368. 1182 y(is)i(required.)21 b(Including)c(dictionary)f(con)o(v)o(ersion,)f(the)h
  1369. (co)q(de)g(generated)f(b)o(y)g(the)g(t)o(yp)q(e)g(c)o(hec)o(k)o(er)h(for)0
  1370. 1281 y Fc(f)24 b(\(x)f(::)h(Text)f(a)h(=>)g(a\))f(=)h(show)f(x)0
  1371. 1379 y Fh(w)o(ould)16 b(b)q(e)0 1477 y Fc(f)24 b(x')f(=)h(case)f(unify)h
  1372. (<constant)e(for)i(Text)f(a)h(=>)f(a>)h(tag)f(of)191 1534 y(UnifyError)f(->)i
  1373. (failure)191 1590 y(Match)f([a_type])g(->)239 1647 y(case)g(dictLookup)f
  1374. (a_type)h("Text")h(of)286 1703 y(NotFound)f(->)h(failure)286
  1375. 1760 y(Found)g(dText)f(->)g(show)h(dText)f(x)48 1816 y(where)95
  1376. 1872 y(MkDynamic)g(tag)h(x)f(=)h(x')95 1929 y(failure)f(=)h(error)f("Runtime)
  1377. g(pattern)g(match)g(failure")0 2027 y Fh(The)14 b(implemen)o(tation)h(of)e(t)
  1378. o(yp)q(e)h(capture)f(can)h(b)q(e)g(accomplished)i(in)e(a)g(manner)f(similar)i
  1379. (to)e(dictionary)0 2084 y(con)o(v)o(ersion[4].)32 b(T)o(yp)q(e)20
  1380. b(constan)o(ts)e(cannot)i(b)q(e)g(completely)h(constructed)f(un)o(til)g(all)h
  1381. (comp)q(onen)o(ts)e(of)0 2140 y(the)f(t)o(yp)q(e)g(ha)o(v)o(e)g(b)q(een)h
  1382. (generalized.)31 b(Placeholders)20 b(are)d(used)i(to)f(p)q(ostp)q(one)g(t)o
  1383. (yp)q(e)h(capture)f(on)g(t)o(yp)q(e)0 2197 y(v)m(ariables)g(still)g(b)q(ound)
  1384. g(in)g(the)e(t)o(yp)q(e)h(en)o(vironmen)o(t.)2i(a)e(v)o(ery)h(simple)h(macro-lik)o(e)g(mec)o(hanism)g(in)o(v)o(ok)o
  1385. (ed)0 1978 y(b)o(y)c(deriving)i(clause)g(whic)o(h)f(will)h(call)g(a)e
  1386. (dynamic)h(v)o(ersion)g(of)f(the)g(instance)h(function.)20
  1387. b(The)10 b(declaration)0 2078 y Fc(derive)23 b(Text\(T\))g(as)0
  1388. 2135 y(instance)g(Text\(Components)f(T\))h(=>)h(T)f(Type)h(where)48
  1389. 2191 y(print)f(x)h(=)f(printDynamic)g(\(toDynamic)f(x\))0 2291
  1390. y Fh(The)17 b(only)g(non-standard)g(Hask)o(ell)g(w)o(e)g(use)g(here)g(is)g
  1391. Fc(Components)23 b(Type)o Fh(.)h(This)18 b(is)f(expanded)h(in)o(to)e(a)0
  1392. 2347 y(list)g(of)f(all)h(structure)f(comp)q(onen)o(ts)g(of)g(the)g(t)o(yp)q
  1393. (e.)20 b(The)c(declaration)0 2447 y Fc(data)23 b(Type)h(a)f(=)h(C1)g(a)f(|)h
  1394. (C2)g(Int)f(deriving)g(Text)0 2547 y Fh(w)o(ould)16 b(generate)f(the)g(follo)
  1395. o(wing)h(instance:)0 2647 y Fc(instance)23 b(Text\(a,Int\))f(=>)i(Text)f
  1396. (\(Type)g(a\))h(where)48 2704 y(print)f(x)h(=)f(printDynamic)g(\(toDynamic)f
  1397. (x\))p eop
  1398. %%Page: 11 12
  1399. bop 0 50 a Fi(8)45 b(AN)16 b(EXAMPLE:)e(DERIVED)i(INST)l(ANCES)853
  1400. b Fh(11)0 199 y(Con)o(text)13 b(reduction)i(is)g(required)g(to)e(correctly)h
  1401. (propagate)f(con)o(text)h(information)g(do)o(wn)g(to)f(the)h(com-)0
  1402. 256 y(p)q(onen)o(ts)g(of)e(the)i(t)o(yp)q(e.)19 b(As)14 b(this)f(is)h(not)f
  1403. (alw)o(a)o(ys)g(p)q(ossible,)i(the)e(instance)h(ma)o(y)f(not)g(b)q(e)h(deriv)
  1404. m(able.)21 b(This)0 312 y(con)o(text)16 b(reduction)i(is)f(already)g(a)f
  1405. (part)g(of)g(the)h(deriv)o(ed)g(instance)h(expansion)f(-)g(the)g(only)g
  1406. (di\013erence)0 369 y(is)f(that)e(it)i(b)q(ecomes)g(more)f(visible)i(here.)k
  1407. (This)16 b Fc(derive)23 b(...)g(as)15 b Fh(construct)g(is)h(not)f(directly)i
  1408. (related)0 425 y(to)h(the)i(dynamic)g(t)o(yping;)h(alternativ)o(e)e(w)o(a)o
  1409. (ys)f(of)h(generating)g(this)g(instance)h(declaration)g(could)g(b)q(e)0
  1410. 482 y(prop)q(osed.)28 b(What)17 b(is)h(crucial)i(here)e(is)g(that)f(the)h(b)q
  1411. (o)q(dy)g(of)g(the)g Fc(Text)f Fh(instance)h(de\014ned)i(ab)q(o)o(v)o(e)d
  1412. (calls)0 538 y(a)i(generic)i(prin)o(ter)f(capable)h(of)e(prin)o(ting)i(v)m
  1413. (alues)f(of)g(an)o(y)f(t)o(yp)q(e.)34 b(Although)20 b(w)o(e)f(ha)o(v)o(e)h
  1414. (used)g(a)f(v)o(ery)0 594 y(simple)f(syn)o(tactic)e(means)h(to)e(start)h(the)
  1415. g(dynamic)h(prin)o(ting)h(pro)q(cess,)e(the)h(real)g(w)o(ork)e(is)i(b)q(eing)
  1416. h(done)0 651 y(b)o(y)d(dynamic)h(t)o(yp)q(es.)0 718 y(The)11
  1417. b(dynamic)g(prin)o(ter)g(is)g(resp)q(onsible)h(for)e(prin)o(ting)h(v)m(alues)
  1418. h(of)e(arbitrary)f(t)o(yp)q(e)i(enco)q(ded)h(as)e(dynamics.)0
  1419. 774 y(The)22 b(t)o(yp)q(e)h(captured)f(b)o(y)g Fc(toDynamic)f
  1420. Fh(will)j(b)q(e)f(guaran)o(teed)f(to)f(ha)o(v)o(e)h(a)g Fc(Text)f
  1421. Fh(instance)i(for)f(eac)o(h)0 831 y(comp)q(onen)o(t)15 b(of)g(the)g(t)o(yp)q
  1422. (e.)0 898 y(A)g(v)o(ery)g(simple)i(prin)o(ter)e(for)g(dynamic)h(v)m(alues)g
  1423. (w)o(ould)g(b)q(e:)0 999 y Fc(printDynamic)22 b(::)i(Dynamic)f(->)g(String)0
  1424. 1056 y(printDynamic)f(d)i(=)g(typeName)e(++)i(concat)f(slotValues)g(d)g
  1425. (where)48 1112 y(typeName)f(=)i(constrName)f(\(dConstructor)f(d\))48
  1426. 1169 y(slotValues)g(=)i(map)f(\(\\\(s)h(::)f(Text)h(a)f(=>)h(a\))g(->)f("\(")
  1427. h(++)f(print)g(s)h(++)g("\)"\))f(dSlots)g(d)0 1271 y Fh(Although)18
  1428. b(this)g(is)f(m)o(uc)o(h)h(simpler)g(than)f(the)h(standard)f(Hask)o(ell)h
  1429. (prin)o(t)f(instance)i(it)e(illustrates)h(ho)o(w)0 1327 y(dynamics)k(can)g(b)
  1430. q(e)g(used)g(to)e(create)i(a)f(structurally)g(p)q(olymorphic)i(prin)o(t)f
  1431. (routine.)39 b(The)22 b(con)o(text)0 1383 y(supplied)13 b(in)e(the)f
  1432. (instance)i(declaration)f(assures)f(that)g(the)g Fc(\(s)24
  1433. b(::)f(Text)g(a)h(=>)g(a\))10 b Fh(will)i(alw)o(a)o(ys)e(matc)o(h)0
  1434. 1440 y(the)15 b(v)m(alue)i(in)f(the)f(slot)g(of)g(the)g(dynamic.)0
  1435. 1507 y(The)g Fc(Eq)f Fh(\(equalit)o(y\))h(class)g(illustrates)g(some)g(more)f
  1436. (asp)q(ects)h(of)f(dynamic)h(t)o(yping.)20 b(Here)15 b(the)g(deriving)0
  1437. 1563 y(template)g(is)0 1665 y Fc(derive)23 b(Eq\(T\))g(as)0
  1438. 1722 y(instance)g(Eq\(Components)f(T\))h(=>)h(Eq)g(T)f(where)48
  1439. 1778 y(x)g(==)h(y)g(=)f(dymanicEq)g(\(toDynamic)g(x\))g(\(toDynamic)g(y\))0
  1440. 1880 y Fh(The)e(dynamic)i(equalit)o(y)f(function)g(\014rst)f(ensures)g(that)g
  1441. (the)g(v)m(alues)i(and)e(created)g(with)h(the)f(same)0 1936
  1442. y(constructor)14 b(and)i(then)f(compares)g(slots)g(pairwise.)0
  1443. 2038 y Fc(dynamicEq)23 b(::)g(Dynamic)g(->)h(Dynamic)f(->)g(Bool)0
  1444. 2094 y(dynamicEq)g(x)g(y)h(=)g(dConstrName)e(x)i(==)f(dConstrName)g(y)h(&&)
  1445. 453 2151 y(sameSlots)f(\(dSlots)g(x\))h(\(dSlots)e(y\))48 2207
  1446. y(where)h(sameSlots)g([])g([])h(=)f(True)191 2264 y(sameSlots)g(\(\(x)g(::)h
  1447. (Eq)f(a)h(=>)f(a\):xs\))h(\(y:ys\))f(=)286 2320 y(x)h(==)g(fromDynamic)e(y)i
  1448. (&&)f(sameSlots)g(xs)h(ys)0 2422 y Fh(The)15 b(function)h Fc(dConstrName)e
  1449. Fh(returns)h(the)g(name)h(of)e(the)i(constructor.)0 2489 y(The)e(dynamic)g
  1450. (reader)g(di\013ers)f(from)g(the)h(previous)g(examples)g(in)h(that)d(it)i(is)
  1451. g(t)o(yp)q(e)g(driv)o(en)g(rather)f(than)0 2545 y(data)h(driv)o(en.)21
  1452. b(The)15 b(read)g(pro)q(cess)h(tak)o(es)e(a)h(t)o(yp)q(e)g(ob)s(ject)f(and)h
  1453. (returns)g(an)g(ob)s(ject)g(of)f(that)h(t)o(yp)q(e.)20 b(The)0
  1454. 2602 y(template)15 b(for)g(the)g Fc(read)g Fh(function)h(is)0
  1455. 2704 y Fc(derive)23 b(Read\(T\))g(as)p eop
  1456. %%Page: 12 13
  1457. bop 0 50 a Fi(9)45 b(SUMMAR)l(Y)16 b(AND)f(CONCLUSIONS)981
  1458. b Fh(12)48 199 y Fc(instance)22 b(Read\(Subtypes)h(T\))g(=>)h(Read)f(T)h
  1459. (where)72 256 y(read)f(s)h(=)f(a)h(where)119 312 y(ty)g(=)g(toDynamic)e(a)119
  1460. 369 y(a)i(=)g(\(fromDynamic)e(v,s\))h(where)239 425 y(\(v,s\))g(=)h
  1461. (\(readDynamic)e(s)h(ty\))0 513 y Fh(This)15 b(read)f(function)h(returns)f(a)
  1462. g(tuple)h(con)o(taining)g(the)f(v)m(alue)i(and)e(the)g(remaining)i(input.)k
  1463. (The)15 b(class)0 570 y(system)g(supplies)i(the)e(t)o(yp)q(e)h(b)q(eing)g
  1464. (read:)k(the)15 b(t)o(yping)h(of)e Fc(read)h Fh(is)0 658 y
  1465. Fc(read)23 b(::)h(Read)f(a)h(=>)g(String)f(->)g(\(a,String\))0
  1466. 746 y Fh(The)d(v)m(alue)h Fc(ty)e Fh(in)h(the)g(ab)q(o)o(v)o(e)f(example)h
  1467. (is)g(a)g(dynamic)g(constructed)g(strictly)g(for)f(the)g(purp)q(ose)h(of)0
  1468. 802 y(extracting)15 b(the)f(t)o(yp)q(e)h(tag.)k(The)c(v)m(alue)h
  1469. Fc(a)e Fh(has)h(the)g(t)o(yp)q(e)f(returned)i(b)o(y)e(the)h
  1470. Fc(read)f Fh(function)i(so)e Fc(ty)g Fh(will)0 859 y(con)o(tain)i(the)f
  1471. (desired)i(t)o(yp)q(e.)k(Since)c Fc(a)e Fh(is)h(the)g(result)g(of)f(the)g
  1472. Fc(readDynamic)f Fh(function,)i(an)g(attempt)e(in)0 915 y(the)e(function)h
  1473. (to)e(ev)m(aluate)i Fc(ty)f Fh(w)o(ould)g(lead)h(to)e(an)h(in\014nite)i(lo)q
  1474. (op.)20 b(Since)13 b(Hask)o(ell)g(is)f(lazy)l(,)h(ho)o(w)o(ev)o(er,)f(the)0
  1475. 972 y(dynamic)i(can)f(b)q(e)g(constructed)g(without)g(ev)m(aluating)h(the)f
  1476. (v)m(alue)h(it)f(con)o(tains.)20 b(\(F)l(or)11 b(a)i(strict)g(language)0
  1477. 1028 y(suc)o(h)k(as)f(ML)g(a)g(v)o(ersion)h(of)f Fc(toDynamic)f
  1478. Fh(whic)o(h)i(captures)f(only)h(the)g(t)o(yp)q(e)f(and)h(not)f(the)g(v)m
  1479. (alue)i(could)0 1085 y(b)q(e)e(used.\))0 1152 y(The)g Fc(readDynamic)e
  1480. Fh(function)i(is)g(to)q(o)f(in)o(v)o(olv)o(ed)h(to)f(presen)o(t)h(here.)21
  1481. b(A)o(t)15 b(the)h(heart)f(of)g(this)h(function)g(is)0 1208
  1482. y Fc(dMake)o Fh(,)g(used)g(to)f(create)g(the)h(v)m(alue,)h(and)f(a)f(form)g
  1483. (of)g Fc(dSlots)o Fh(,)h(whic)o(h)g(returns)g(the)f(slot)h(t)o(yp)q(es)g(of)f
  1484. (the)0 1265 y(ob)s(ject)g(b)q(eing)h(read.)k(These)15 b(t)o(yp)q(es)h(are)f
  1485. (used)g(to)g(recursiv)o(ely)h(read)g(the)f(structure)g(comp)q(onen)o(ts.)0
  1486. 1415 y Fe(9)69 b(Summary)23 b(and)h(Conclusions)0 1527 y Fh(Muc)o(h)18
  1487. b(of)g(what)g(is)h(presen)o(ted)f(here)h(is)g(deriv)o(ed)g(from)f(either)g
  1488. (ML)h(st)o(yle)f(dynamic)h(t)o(yping)g([2)o(,)f(3])f(or)0 1584
  1489. y(general)h(programming)f(practice)i(in)f(dynamic)h(languages.)28
  1490. b(The)18 b(principal)i(con)o(tributions)e(are)g(the)0 1640
  1491. y(use)23 b(of)e(the)i(more)f(complex)h(Hask)o(ell)g(t)o(yp)q(e)f(system,)h
  1492. (the)g(sk)o(olemization)g(pro)q(cess)f(to)g(a)o(v)o(oid)g(t)o(yp)q(e)0
  1493. 1697 y(reconstruction,)d(and)f(the)g(seman)o(tics)h(of)e(the)i
  1494. Fc(fromDynamic)d Fh(op)q(erator.)28 b(This)19 b(w)o(ork)e(has)h(practical)0
  1495. 1753 y(v)m(alue:)34 b(it)22 b(pro)o(vides)g(a)f(elegan)o(t)h(solution)g(to)f
  1496. (a)g(serious)h(shortcoming)g(in)g(the)g(design)g(of)f(Hask)o(ell.)0
  1497. 1809 y(By)16 b(pro)o(viding)h(a)f(user)g(an)g(accessible)i(means)e(to)f(ac)o
  1498. (hiev)o(e)i(structural)f(p)q(olymorphism,)h(a)f(previously)0
  1499. 1866 y(in\015exible)i(asp)q(ect)e(of)e(the)i(language)f(has)g(b)q(een)h(made)
  1500. g(accessible)h(to)d(the)i(user.)0 1933 y(Other)h(t)o(yping)g(systems)f(with)g
  1501. (capabilities)j(similar)f(to)e(dynami