Aa0 YZZZ[[\]HH $ d H6$$ff@   d# Footnote TableFootnote **e. . / - :;,.!?`O4/adTOCHeading!C'sDylanGwydion Implementors Instantiable accessorsbytecharacterdo(rcurry(checkentrancyeof0 filestreamafilename forceoutput getinputRinputavailableilimited([self-organizing-list]  The Subsequence Module\[subsequence]O subsequenceVector-Search Modulesfind-first-keyce find-last-key  ch mran nesea oamet<$lastpagenum>*<$daynum01> <$shortmonthname> <$shortyear>"<$monthnum>/<$daynum>/<$shortyear>)<$daynum> <$shortmonthname> <$shortyear> z"<$monthnum>/<$daynum>/<$shortyear><$monthname> <$daynum>, <$year>e"<$monthnum>/<$daynum>/<$shortyear> <$fullfilename> <$filename> <$paratext[Title]> <$paratext[Heading]>3. <$curpagenum> <$marker1> <$marker2> (Continued)+ (Sheet <$tblsheetnum> of <$tblsheetcount>)Pagepage<$pagenum>Heading & Page <$paratext> on page<$pagenum>See Heading & Page%See <$paratext> on page<$pagenum>.o\< Table & Page7Table<$paranumonly>, <$paratext>, on page<$pagenum>o \<AnAAmoAAJ4da&A rna'By(C o>/)D $ea*E hn+Fuye,G mo-H a<$.I 0Ka/L i>7M teYN 1. $ZOi3.IPuumvQerRerSinTShUe oVt)WagewX 2. =YearZppaF[He\e<] eR^o3. S_<$Z`>ar\a $pabdcfd5ejfngph6i7j8kzl|m;n4. <oBpDqAErKsALtru'd! Yyed! ZH$ " H$ umdKM Hw " eHw )X dAMp H$ " <H$ >dBM$p Hw " Hw ngdCM HH" HH 4.UUdDV HH" HH 'UUdEV l" " l" $nFM22 May 97  H " mH w"nGM!Running H/F 2# $H" $H  <UUdHV d![ H#* " H#* HR HR MFootnoteHr7 " Hr7 HzHzM Single LineH'"Footnote +#    HR< $ HR< HHM Double LineH " Double Line/%H"1%H " Single Line4%HZ " TableFootnoteϸE]G'E " ϸE]G'E ϸEwPϸEwPM TableFootnoteod !\Hz$H " $H'' 'TU TU hIT&The Collection-extensions Library UU`LXH Designed by the Gwydion Project 2UU`MX<OCopyright (c) 1994, 1995, 1996 Carnegie Mellon University All rights reserved. PUSTU `NT Introduction ohUU OVzThe various modules in this library contain a few new types and operations which are compatible with the collection types tUU@OVXspecified in the Dylan Reference Manual, but which are not part of that specification. UU PVinIt is to be expected that more collection types will appear in time, and they will likely be added to this library. This may also UUPVtresult in reorganizations which could force incompatible changes to the existing modules. We hope to minimize such eFUU@PVd|imcompatibilities and, when forced to them, will include sufficient information to facilitate conversion of existing code. UU`Qb1Collection-extensionsV exports these modules: UU`RbThself-organizing-list iUU SVhProvides self-organizing lists. These explicit key collections provide roughly the semantics of hash giUUSVy btables, but use a probabilistic implementation which provides O(n) worst case performance but can UU@SVco9provide very fast constant time access in the best case. iUU`Tbtysubseq  UU UVifeProvides subsequences, which represent an aliased reference to some part of an existing sequence. nUUUVctgThese are analogous to slices (in Ada or Perl) or displaced arrays (in Common Lisp). Subsequences are ay "UUUVxthemselves subclasses of cV, and can therefore be passed any cV or cV uc.UU@UVP operation. tib:UU`Vbfovector-search FUU WVenlProvides a small assortment of specialized operations for searching and modifying cVs. These poRUUWV _operations are analogous to existing collection operations but provide keywords and efficiency . ^UU@WVy Himprovements which are meaningful only within the more limited domain. ta;UTU hXTob$The Self-Organizing-List Module s UU(YVrfThe Self Organizing List is a poor mans hash table. More precisely, cV is a subclass of cV and cV for which addition and retrieval are both linear in the worst case, but sliUU@YVl)Wwhich use a probabilistic strategy which yields nearly constant time in the best case. vesUU ZV<{Because they have a very low overhead, self-organizing lists may provide better peformance than hash tables in cases where tibUUZVfo}references have a high degree of temporal locality. They may also be useful in situations where it is difficult to create a cUU@ZVpoproper hash function. UU`[Vgo2Instantiate cVs with UU`\Zcy5make(, test: test) gUU ]de TestV is expected to be an equality function. In particular, it is expected to satisfy the identity and transitivity requirements (UU@]VtaSas described in the DRM. If not specified, dtestV defaults to c\==V. e-/UITU h^T The Subsequence Module  a^UU(_colV is a new subclass of cV. A subsequence represents an aliased reference to some part of an existing jUU_Vnesequence. Although they may be created by cmakeV (with required keywords bsource:V, bstart:V and bend:V) on one of the rmvUU@_VleKinstantiable subclasses, they are more often created by calls of the form mpoUUh`Zy 8subsequence(sequence, start: 0, end: 3) crd!uti]Inan$H" $H  ing-list g UU aVwhere bstartV: and bend:V are optional keywords which default to the beginning and end, respectively, of the source (UUaVasssequence. No other new operations are defined for subsequences, since all necessary operations are inherited from seqUU@ac^V. 4UU`bV kBecause subsequences are aliased references into other sequences, several properties must be remembered: istJUU`cW_hThe contents of a subsequence are undefined after any destructive operation upon the source sequence. sYUU dWennDestructive operations upon subsequences may be reflected in the source. The results of creverse!W and eUU@dcUsort!W should be expected to affect the source sequence for vector subsequences. qUU`eV UU fV~If the source sequences are instances of cV or cV, then the implementation will use subclasses of UU@fc WV which are also subclasses of cV or cV. efaUU`gVngEfficiency notes: , UU hWgThe implementation tries to insure that subsequences of subsequences can be accessed as efficiently as eraUU@hWd 8the original subsequence. (For example, the result of UU`iZsuAsubsequence(subsequence(source, start: 1), start: 2) pUU`jWem>would produce a subsequence identical to the one produced by UU`kZr *subsequence(source, start: 3) UU`lWWVector subsequences, like all other vectors, implement constant time element access. he UU mWergNon-vector subsequences may take non-constant time to create, but will provide constant-time access to ubs*UUmWfthe first element. This should produce the best performance provided some element of the subsequence 6UU@mWthis accessed at least once. la@UWTU hnTThe Vector-Search Module clUU oVseThe vector-search module provides basic search and replace capabilities upon restricted subsets of cV -- primarily trixUUocsuV. Exploiting the known properties of these types yields substantially better performance than can be achieved for e rUU@oVsequences in general. suUU`pVnc'The following functions are supplied: UUUhqcodfind-first-keyV(dvectorV, dpredicate?V, #key dstartV, dendV, dfailureV) => dkeyV [Function] VeUU rV lFind the index of first element (after dstartV but before dendV) of a vector which satisfies dpredicate?V. If no matching UUrVroelement is found, return dfailureV. The defaults for dstartV, dendV and dfailureV are, respectively, b0V, bsize(vector)V, and UU@rbsex#fV. This function is like cfind-keyV, but accepts bstart:V and bend:V rather than bskip:V. viUUhscndfind-last-keyV(dvectorV, dpredicate?V, #key dstartV, dendV, dfailureV) => dkeyV [Function] nowUU`tVesJThis is like cfind-first-keyV, but goes backward from dendV. UU`uV eH$ "cThH$ lHw "ecaHw l H$ "lFiH$ l Hw "pdiHw lfouHH"oHHly, HH"HHl, bl" "rhel" leyH "ydH lnct$H"f$Hl$H"$Hl$H"$HlYi^dYLeftdZRightd[ Referenced\]d]\+$0fQ% ,  1Heading 1Heading Rule. FirstBody. $$fSE *$ 1Step Step Number S:.\tStep. df % 2Heading .. . ff2ff233@ %"H     h  Argument.  @ %H     h  Body. 33+33$fB %ul33+n Bullet Bullet SymbolB:\t. ]K$fB % ]m Bullet2. Bullet SymbolB:\t. $$$f %CBullet. $$$f *CStep. ff2ff233@ %H    h  Description. dd33@ %H    hl   u Description2. \ff233@ %H  u t mh:  DItem. KK@ %$H    h  DItem2. 33 @ %33 Endnote.\t. 33 @ %33 Endnote1.\t. ff2K33@ % He i  \  h  Extra Key Arg. ff2ff2 @ %HI    h  Function Body. @ %DI Function Head. HHH fT% HeadingBody. HHHfD %  HeadingSub.  @ %$  e  h  Parameter List. $$fS *$ Step Step Number S:.\t. @ H    h  Verbatim. fM * CellHeadingd. fM *CellBody. fPT *  TableTitleT:Table : . @V %H    h  Body. @M *  Header. @ M *  Footer. f V %Body. HHH f TT% HeadingBody. HHHf XD %  HeadingSub. $0f TQ%  1Heading 1Heading Rule. FirstBody. @V %H    h  Body. ff233@Z H    h  DItem. KK@V %H d y  h  DItem2. ff233@V %H     h  DItem. @Z H    h  Verbatim. $0fTQ%  1Heading 1Heading Rule. FirstBody. 33+33$feB %33+ Bullet Bullet SymbolB:\t. $$$fW %CBullet. @V % Function Head. ff2ff2 @V %H    h   Function Body. MmN VzM* P*  R%Argument S  Bullet SymbolFi@T%  V% W% @X%  _Z [Computer \%Emphasis ]EquationVariables ^  Step Number _ Subscriptad ` Superscript a% Variable _bComputer @c% Variable d%Argument oc;e  Bullet Symbol!1&!"t#$i%%ThinMedium DoubleThick@  Very Thinyy_ zHHHHHFormat A {HHsHHHFormat BCommentm}pm n  o @d  Black!TWhiteddAReddd SGreendd BluedCyandMagentad YellowW.Palatino.R.700 Palatino-Bold W.Times.R.400 Times-RomanW.Palatino.R.400Palatino-RomanW.Palatino.I.400Palatino-ItalicW.Courier.R.400Courier W.Times.R.700 Times-BoldW.Courier.R.700 Courier-BoldW.Helvetica.R.700Helvetica-Bold7Courier Helveticat%Palatino*Times Regular Regular BoldItalicRegularpݠp߽*%΅aä,CVCT t'>E>y?ouѽ"ܧmU)#= 4%n0'KhD&>