Aati!: R.HH $ d H6$$ff@*  d#  Footnote TableFootnote**. . / - :;,.!?3`p//aTOCHeading.AlpernBaderC's CritchlowDemasDylanGwydionHaible Implementors InstantiableRatnerRogoffShen Strassman accessorsbytecharacterdo(rcurry(checkdsteltentrancyeof filestreamfilename forceoutput getinputinputavailablelimited(sunicodeunion([byte-vector] _  "\[byte-character] ` assert a  piped-execin b  mindy c compiled-for-hppa d wcompiled-for-x86 e newlines-are-CRLFn n Dylan vs. Mindy o Mindy vs. Dylan f  Conditional Compilationn g  Gwydion compilers r usinge h n compilersl t (define function u function-definer i  future Gwydion releasesa j 116567: Function Head: *warning-output* [Variable]( k u+26117: 1Heading: 3. Conditional Compilationn l  compiled-for-hpux | subclass specializers! p compiled-for-win32 m compiled-for-unix q  compiled-for-linuxQ s compiled-for-solaris v  compiled-for-sparc w +40325: Function Head: piped-exec [Function] x 510528: 1Heading: 9. Extensions to the Streams Libraryi-o y "37402: Heading: Gwydion Extensions  Extensions Moduley-v one-of\< afalse-or cload Debugger Customizationse nDebugger-format report-condition  condition-format  condition-force-output  *warning-output*[warning-output] aTables t+15429: 2Heading: 10.4. Exiting Applicationsr  exit  key-exists?p Integers n$\[general-integer] u&\[extended-integer]un e!$maximum-integer[maximum-integer]k 6!$minimum-integer[minimum-integer]lio  \[ratio]  ratiosu s numerator!   denominatorr &41731: 1Heading: 12. The System Moduleco f System Module  l\[buffer]  l copy-bytes  getenvun eenvironment variablesn Introspection Module s function-name br o class-name2: gsingleton-object  \[subclass]-v  subclass-of ! a$\[limited-integer]" olimited-integer-base-class-f# limited-integer-minimumn$  limited-integer-maximum% t\[union]&  union-membersu[w' oobject-addressTaP  Cheap-io Module2Q 1formatngR aprint S  xprin1  / x Copyright  0 e Bug reports 4 -*34437: 1Heading: 11. The Extensions Moduleed : r325560: 1Heading: 8. Dylan vs. Mindy Language Issuesx E g.20437: 2Heading: 11.2. Debugger Customizations  8ati>[ @  ? =  nuX|3% I325560: 1Heading: 8. Dylan vs. Mindy Language IssueseX|3) Iy&41731: 1Heading: 12. The System Module X|3*  Is*34437: 1Heading: 11. The Extensions Module5UK5<$lastpagenum>6*<$daynum01> <$shortmonthname> <$shortyear>7"<$monthnum>/<$daynum>/<$shortyear>8)<$daynum> <$shortmonthname> <$shortyear> 9"<$monthnum>/<$daynum>/<$shortyear>:<$monthname> <$daynum>, <$year>s-f;"<$monthnum>/<$daynum>/<$shortyear>< <$fullfilename>u= <$filename>[io> <$paratext[Title]>? <$paratext[Heading]>Ta@ <$curpagenum>dA <$marker1>B <$marker2>C (Continued)D+ (Sheet <$tblsheetnum> of <$tblsheetcount>) -EPagepage<$pagenum>EenFHeading & Page <$paratext> on page<$pagenum>GSee Heading & Page%See <$paratext> on page<$pagenum>.eCuH Table & Page7Table<$paranumonly>, <$paratext>, on page<$pagenum> nuIHeadingsection <$paratext>yJFunctionfunction <$paratext>  ) Y 3 ) * + , - A sh. A"/ 0 1 Amo2 A  Nmo d,  f" /um a  i>u na1  pa e  edi1 cu  !  S 2. (J + b3. > t1. ! $p} nHeh earo ppav Hex e<8  2     4   h D     10.  A    d f / a i    e e       .  $p nHe ear ppa He e<   e  e  abl  o<'   \   n  $ u m>< _! " # $ % & + , n6 h4. o7 : ; < = > A? B  C d\ 5. ] I^ 5.1. ;_ fc j k +l *m ,n &o %p q r .2s t u n1v e2w p3x 4y e5z  { e| a} o 5.2.    n  $ u m><       3 4 5 h4.6 7 8 / Y  z { | } ~ A f .y  5.3.  x y z  5.4.   .   n e p  e  B 5.5. C aE oP S  K n G $H u m5.6.   : < 9      .      ! " #  $  % & ' ( ) * + 6. , - . / 4.0 1 2 3 4 5 6 7 8 9 &O 'P (Q )R *S +T _  ` a b c d e 7. f g 7.1. h i j k .l m n o p q 7.2. r 7z { | } ~    7.3.   .                                        . * 7.4. +       .@w 8. Bx Cy Dz E{ F| G} H~ I J K M N O P Q R kt  9. lu mv nw ox py qz { AoBdAdBH$ CA H$ UUd  .Hw DA Hw  UUd  H$ EA H$ UUd  Hw FA Hw K UUd  HH GA HH  9.UUd  HH HA HH oBUUd  l" IB l" $UUn  U22 May 97  V H JB H wUUn ! ZRunning H/F 2 Y W# X $HKB $H  UU`  dLMX H#* MNL H#* HR HR FootnoteHr7 NMOL Hr7 HzHz Single LineH'ONQLPPFootnote  PO    HR< QORL HR< HH Double LineH RQULST Double Line$STRH&TSRH URWLW VV Single Line)VUHZWUXL TableFootnoteϸE]G'E XWL ϸE]G'E ϸEwPϸEwP TableFootnoteodYHz$HZY $H)))TU TU h  yGwydion Extensions *UU` UCopyright (c) 1994, 1995, 1996, 1997 Carnegie Mellon University All rights reserved. QUMTU `  Introduction bUU  vIn the process of working with Dylan, the Gwydion Project has come up with numerous extensions to the Dylan language. nUU {Some of them form entire libraries, like the Collection-Extensions and String-Extensions libraries. Others have been added zUU@ @to the Dylan library, in such modules as Extensions and System. UU  uWe continue to make no claims about future support for our extensions. However, some extensions are more likely than FUU Eyothers to make it into our future compilers. This file documents those extensions which we think will be included in our UU |compilers Dylan library. Extensions which go in separate libraries are documented in their own files; extensions which are UU@ ppart of the Mindy Dylan library but which have a less certain future are documented in the Mindy documentation. neUU( it|For the remainder of this document, we shall refer to  gGwydion  hcompilers as a shorthand for Mindy and other Dylan ydUU mecompilers that the Gwydion Project may write. It is not meant as a guarentee that all  ifuture Gwydion releases will support ExUU@ g-these extensions. UU`  ahSpecific Gwydion compilers may support extensions not listed here; see their documentation for details. DUTU h nu" n o :Dylan Language Issues .UU  sivWhenever possible, we have tried to keep the Dylan module pristine and unextended, prefering to add our extensions to :UU  t}separate modules or libraries. However, this is not always possible, particularly when it involves extending the behavior of sFUU arya function or macro that is exported from the Dylan module. Currently, Gwydion compilers support these extensions to the eRUU@ tu!Dylan module as described below: mhUUh j ]Gwydion compilers support keyed-by clauses in for statements. The format of such a clause is tUU` ot=var KEYED-BY key IN collection oUU` t mVar is bound to each element in collection, and key is bound to the element's key value. eUUh h rGwydion compilers supports using clauses in for statements. The format of such a clause is etUU` ?var IN collection USING protocol WhUU  e wprotocol will be used instead of forward-iteration-protocol. protocol must be a variable name, not araUU@ arIan expression. Using clauses may be used together with keyed-by: tUU` r Tvar KEYED-BY key IN collection USING protocol CuUU(! omt t uGwydion compilers have an additional type of top level definition, define function, which creates a  UU! s mconstant binding in the current module and initializes it to a new function. Define functions usage UU@! YEBis similar to define method. The following is an example: UU " me#define function cube (x) ۈUU" elx * x * x; UU@" Gwend function cube; i0UU`# fo)A similar result might be had by writing i<UU $  ,define constant cube = method (x) ބHUU$ ol-x * x * x; uTUU@$ f,end method;  jUU`%  nor notvUU &  !define method cube (x) mUU& r x * x * x; UU@& end method cube; d[co  $H\[ t$H..ich crea.UU(+ dio |Gwydion compilers supports subclass specializers via the limited function. A subclass specializer YEUU+ hcauses a method to be invoked whenever the generic function was called on a value that is the specified ۨUU+ eljclass or any subclass of the specified class. The method is never invoked on a value that is an instance *UU+ e p(direct or indirect) of the specified class, only when the value is a subclass of the specified class. The fol6UU@+ lowing is an example: LUU , define method make eXUU, K(result-class :: limited(, subclass-of: )); dUU, #let x = next-method(); pUU, th0do-special-logging-or-something(x); |UU, x;  UU@, end method; IUTU h $ f kConditional Compilation eaUU` BGwydion compilers supports conditional compilation. The syntax is UU   +#if (feature-expression) zerUU + dylan-code nvoUU en/#elseif (feature-expression) pecUU dylan-code f tUU . #else erUU e dylan-code + UU@ nd#endif 2UU  en(The #elseif and #else clauses are optional) A feature-expression is composed of features and the ~, &, and | operators, >UU and may be parenthesiszed as usual. Features are not case sensitive. Mindy and d2c use the -D and -U command line JUU@ Lswitches to define new features. Some features currently supported include: x;`UUh ,  bmindy lUU` 'Defined when compiling with mindycomp. Co}UUh  ccompiled-for-hppa UU` on8Defined when compiling for the HP PA-RISC architecture. UUh ea dcompiled-for-x86 rUU` + 9Defined when compiling for the Intel 80x86 architecture. UUh ea vcompiled-for-sparc UU` 3Defined when compiling for the SPARC architecture. UUh  lcompiled-for-hpux UU` de,Defined when compiling for an HP/UX system. f UUh en pcompiled-for-win32 d UU` es_Defined when compiling for a Microsoft Win32 operating system (ie, Windows '95 or Windows/NT). anUUh or qcompiled-for-linux anUU` is7Defined when compiling for the Linux operating system. d2c+UUh   scompiled-for-solaris 7UU` 9Defined when compiling for the Solaris operating system. sHUUh x; mcompiled-for-unix TUU` ,Defined when compiling for a Unix-based OS. p.eUUh   enewlines-are-CRLF qUU   hDefined when compiling for a system whose newline representation is two bytes, a carriage return ('\r') r~}UU + ffollowed by a linefeed ('\f'). Examples of such systems include MS-DOS, Windows '95, Windows/NT, and }UU  gOS/2. It should be kept in mind that not every file on a newlines-are-CRLF system will adhere to this |UU Dejconvention; some will adhere to the Unix convention of using a single linefeed as the newline character. d ]tininws$H!^] r $Han))fined whor)UU@ m.hFor this reason, programs should consider the carriage return an optional part of the newline sequence. olSU'TU `6 Modules of the Dylan Library o<UU 7 TIn addition to containing the Dylan module, the Dylan library contains a variety of modules which provide extensions. HUU@7 orOGwydion compilers export the following modules from the Dylan library: }^UU`: fo Extensions inejUU,; plwThis module exports useful extensions to the Dylan language (see  Gsection The Extensions Module F). at vUU; a fUltimately, there will be several, more logically separate libraries that extend Dylan or provide an UU; ofaapplication framework for users. For now, we put any commonly used utilities in the Extensions nUU@; module. wsUU`< System UU(= $uThis module exports an interface to operating system calls and special, low-level functionality (see  Dsection rUUH= r The System Module C). l UU`> e Introspection UU`? , WThis module exports reflective operations for examining classes, functions, and so on. ڛUU`B Dy Cheap-io rUU`C ieMThis module exports some basic, unextendable input and output functionality. CUTU h\ ng 4The  Extensions Module 'UU ] {Ultimately, there will be several, more logically separate libraries that extend Dylan or provide an application framework cti3UU@] onZfor users. For now, we put any commonly used utilities in the Extensions module. N`^ riGenerally Useful Definitions bUU`_ ; TThe Extensions module exports the following generally useful functionality: t}UUh  ^[Class] UU` SyhThis class is a subclass of  that can only hold integers between 0 and 255 inclusively. leUUh (s! _[Class] UU c od}This class is a subclass of . Characters of this type represent the ASCII character set (or extensions to nUU@c nsfASCII). Note, in Gwydion compilers the  class is equivalent to Unicode characters. UUh nd `assert[Function] UU`  Arguments UU` 'value :: UU` llValues al,UU` panone bUU`  D Description e UU  meThis function signals an error if value is #f. Otherwise, it does nothing. In future Gwydion compilers, assert may Ge+UU@ inPbe changed to a macro, which may or may not evaluate its argument exactly once. geFUUhj ct one-of[Function] RUU`k ct Arguments ^UU`l  #rest objects :: jUU`m Values an vUU`n  btype :: incUU`o  Description  UU p rThis function takes any number of objects, and returns the type that is the type-union of the singletons of those d"_nNo, $H#`_ la$Hnic))UUh rt)UU@p %objects. For example, the expression UU`q > +one-of(#"foo", #"bar", #"baz")  2UU`r is equivalent to iHUU`s U type-union(singleton(#"foo"), singleton(#"bar"), singleton(#"baz")) dcUUht tu false-or[Function] rtoUU`u  Arguments {UU`v matype:: UU`w  iValues nt UU`x Fbigger-type :: UU`y ] Description k UU z ^sThis function is useful in type expressions. It captures the common idiom of returning an instance of a particular UU@z De-type or the value #f. The expression UU`{ f false-or() iUU`|  is equivalent to the expression dUU`} 1type-union(, singleton(#f)) h (   EDebugger Customizations n(UU  w(A note on terminology: We use the term debugger here in the loose, Dylan sense of anything that handles an uncaught 4UU@ "fperror. In Mindy, this debugger is indeed a full fledged debugger, but in other Gwydion compilers it may not be) siJUU  inThe debugger uses the function report-condition to print conditions as error messages to users; for example, this is the VUU tyfunction that implements the %S format-string directive for conditions. The debugger also uses the format function exported fbUU infrom the Cheap-io module to process format strings, and it prints directly to the Unix stdout. If any library that is used nUU siitself uses the  Debugger-format library, then the debugger uses format from the Format library, which is shipped with zUU gesGwydion compilers. You can extend how the debugger prints conditions, change what formatting function it uses, and terUU@ he6direct where debugger output goes with the following: UUh n , report-condition[Generic Function] ndUU` s Arguments UU` , condition :: eUU` sistream :: ThUU` e Values 뎪UU` none iUU` rr Description uUU   twThis is the function that is used to print condition variables as error messages to users. The internal format uggUU function used by Mindy uses report-condition for condition arguments to the %S format directive. The Format ly UU@ t.Vlibrarys print-message method for conditions calls report-condition. #UU   ttIf you are writing a module that does no output but still provides report-condition methods, you should use io/UU anxcondition-format to format output. Using condition-format makes your module more flexible for users of your he;UU  gmodule. If you call Cheap-IOs format, youll be forced to write to only one destination, stdout, ignoring the GUU itstream argument. If you call the Format librarys format function, then your module will require the Format, SUU  utPrint, and Streams libraries; therefore, users of your module may ultimately load these other libraries nt_UU tneedlessly. Of course, if you want to make use of the extended functionality of the Format librarys format kUU@  Tncontrol strings, then you only have one choice anyway, and theres no reason to use condition-format. d$aure o$H%ba o$H@us''xcondit t'UUh c, condition-format[Generic Function] xiUU` ou Arguments UU` lestream :: ap-*UU` tcontrol-string :: e t6UU` ti#rest arguments ngBUU` Values stNUU`  Inone aZUU`  Description fUU  n,vThis function serves as a firewall between the condition system and the Streams and Format libraries. rUU uryMethods on report-condition should use condition-format to do their formatting. Users will generally use ~UU@ ioj*debug-output* or *warning-output* for the stream argument, but this is not required. UU  nd}Mindy supplies a method for when stream is #Cheap-IO. The Gwydion Format library supplies a method UU }for when stream is a subclass of . If you are implementing your own streams or format libraries, you UU@ n-Rwill need to define a method on condition-format for your type of stream. UUh t>2 condition-force-outputeneric Function] UU`  Arguments UU` stream :: stUU`  IValues ZUU` Denone oUU`  Description ctUU  reCondition-force-output forces any pending output from streams buffer to streams destination. This function is ndUU sepinvoked by the debugger after a condition has been reported and before it pauses for user input. Unless you are 'UU@ utUwriting a debugger, you do not need to call condition-force-output yourself. d=UU   m}Mindy supplies a method for when stream is #Cheap-IO. The Gwydion Format library supplies a method IUU ea}for when stream is a subclass of . If you are implementing your own streams or format libraries, you -UUU@ inXwill need to define a method on condition-force-output for your type of stream. copUUh ut,  j*warning-output*[Variable] Ar|UU  Default-handler for  uses *warning-output* to print warning messages. This variable must be either UU Coa  from the Streams library, or #Cheap-IO (the default). When this variable is#Cheap-IO, the UU@ keoutput goes to stderr. coh ep  Exiting Applications uUU` yop The Extensions module exports the following functionality for controlling the exiting of applications: dUUh  m exit[Function] foUU`  Arguments UU` Gw #key exit-code :: = 0 ieUU`  Description foUU` ?Causes the process to exit with return code exit-code. ow)` t Collections -=UU` inY The Extensions module exports the following  functionality: od&copu$H'dc i>$Hou++ng messaab+UUh ' key-exists?[Generic Function] UU` ar Arguments UU`  dcollection :: *UU`  tkey :: 6UU` toValues coBUU` epwin? :: NUU` elt :: ZUU` mo Description hefUU  naReturn whether key is in collection. If the key is in the collection, then the second value is the element associated rUU@ #kDwith key; otherwise, the second return value is #f. h Ca  Integers sUU  rnGwydion compilers have an abstract class  which has two concrete subclasses,  and . s have a limited range of values, and  arithmetic uses the computers underlying integer iUU facilities. s can take on any value, and are similar to Common Lisp big-nums. Expressions involving UU Ars produce  results because s are contagious. If an expression UU  :involving only  values would produce a result that does not fit in an , then the Gwydion compiler will UU څsignal an overflow error. You can use the as function to convert back and forth between s and s. As signals an error when converting an  to a , and the value does not fit in a iUU@ e . int UU` [Abstract Class] the2UUH yi# [Class] ili>UU` d- is a subclass of , and is the superclass of  and . YUUh uc$ $maximum-integer[Constant] eceUUh -i$ $minimum-integer[Constant] reqUU` hThese constants hold the largest positive  and the largest negative . ge` wyRatios ileUU` 6The Extensions module exports the following: UUh  c lass] eeUU  oThis class is a subclass of . The ratio is normalized so that it has a positive denominator, and the ndeUU a ngreatest common divisor of the numerator and the denominator is one. Ratios are never automatically converted UU@ duGto integers. For example, ratio(4,2) would return 2/1.  gerLUU` es!denominator :: XUU` RaValues dUU` Thratio :: ڃpUU` he Description |UU`  3This function makes a ratio from the two integers. assd(enmaite $H)fe gr$Hof..enominatio.UUh co numerator[Function] oUU` mp Arguments UU` etratio :: g*UU` Values ic 6UU`! g #the-numerator :: o rBUU`" pe Description ngNUU`#  ;This function returns the numerator part of ratio. . AiUUh$  i denominator[Function] uUU`% pr Arguments UU`& ratio :: aUU`' ioValues UU`( me#the-numerator :: : <UU`) er Description  UU`* ::=This function returns the denominator part of ratio. FUTU h+  < The  System Module UU`, |1The System module exports the following: tUUh-  [Class] UU`. manThis class is a subclass of . It is the built-in class that the Streams module uses. )UUh/ om copy-bytes[Function] 5UU`0  Arguments AUU`1 :dst :: type-union(, , ) MUU`2 dst-offset :: YUU`3 nu:src :: type-union(, , ) eUU`4 src-offset :: tuqUU`5 pacount :: ) A}UU`6  iValues omiUU`7 n]9dst :: type-union(, ) aUU`8  Description ioUU 9 Copies count bytes from src to dst, starting at src-offset and dst-offset, respectively. This function returns dst. This UU9  <function does no bounds checking. Dst and src may be the same (\==) object; this function ensures that it copies UU@9 Hbytes from to the destination portion correctly, regardless of overlap. n UUhO S  getenv[Function] UU`P co Arguments UU`Q &environment-variable-name :: UU`R unValues er>UU`S by1environment-variable-value :: false-or() tUU`T  Description ::UU  r>yReturns the value of the environment variable environment-variable-name. If environment-variable-name is A(UU@  i&undefined, getenv returns #f. CUUh r,# [get-time-of-dayunction] OUU` ri Arguments [UU` Conone gUU` roValues ~sUU` st%time-in-seconds :: t}UU` ct Description nc|UU` st?Returns the number of seconds since midnight, January 1, 1970. g. d*geon$H+hg by$HOat''egardlesn 'UUh   \system[Function] UU` Ar Arguments UU`_ encommand-line :: <*UU`` Values Va6UU`a return-code :: bBUU`b or Description NUU c De|System causes command-line to be given to your shell as input as if the string had been typed as a command. If roZUUc evenvironment variable SHELL is found, its value will be used as the command interpreter (shell); otherwise fUU@c sh(1) is used. [|UU d nouThe parent process will wait until the command terminates. Upon termination of the sub-process, system will eUU@d nreturn a negative value if the command couldnt be executed, or the commands return code if it was executed. IUTU he The  Introspection Module UU`f lThe Introspection module exports reflective operations for examining classes, functions, and types. `g sy Functions UU h Dylan provides some reflective operations for functions, such as function-specializers and instance?. With the latter, you egeUUh b can determine if a function is a  or , but neither Dylan nor Gwydion compilers provide gUUh  aexported class identifiers for other types of functions (such as block exit functions). The Subsection Types describes (shUUh f{definitions that are also useful when inspecting methods because you can get detailed information about method specializer n tUU@h sutypes. , 3UU`i  eBThe Introspection module exports the following functions: NUUhj th! function-name[Function] xZUU`k  Arguments fUU`l function :: rUU`m ctValues odu~UU`n ivresult :: false-or() sUU`o  t Description UU p tiReturns the name of function as a  if function has a name; otherwise function-name returns #f. All theUUp qfunctions defined with define generic or define method have names, and some other functions have nUU@p lenames. e g`q  aClasses cUU`r orJThe Introspection module exports the following for class objects: UUhz  d class-name[Function] UU`{  a Arguments UU`|  mclass :: cUU`} foValues bou(UU`~ erresult :: false-or() .4UU` i Description In@UU  duReturns the name of class as a  if class has a name; otherwise, this function returns #f. Mindy can LUU@  :Halways determine the name of classes defined with define class. ltd,itDep ti$H-ji $H|nc++erwise  me+` llTypes $UU` furThe Introspection module exports the following for inspecting types (and therefore, method specializers): ?UUh na$ singleton-object[Function] cKUU` or Arguments WUU` duspecializer :: clacUU` Values  doUU` object :: U{UU` s Description | UU` as>This function returns the object of the singleton value type. UUh ol [Class] criUU  This class is a subclass of . Instances of this class represent subclass specializers. A subclass specializer . UU qcauses a method to be invoked whenever the generic function was called on a value that is the specified class or UU  Deany subclass of the specified class (see  <section Dylan Language Issues ; for more information). The function rwiUU@ meJsubclass-of returns the class specified for the subclass specializer. UUh or subclass-of[Function] ypeUU` me Arguments UU` specializer :: UU`  cValues UUU` s class :: u)UU` si Description c5UU` Va:Returns the class specified for the subclass specializer. PUUh ri" [Class] \UU  e wThis class is a subclass of . Instances of this class represent limited integer types. See the functions is hUU@  uUU` ifValues (sUU` D/class :: one-of(, ) tioUU` wi Description UU` yReturns the class specified for the limited-integer specializer, either  or . UUh me+ limited-integer-minimum[Function] claUUh  + limited-integer-maximum[Function] : <UU`  Arguments UU` !specializer :: cUU` laValues liz"UU`  class :: false-or() .UU`  Description c:UU   omReturn the inclusive bounds of the limited-integer specializer. If the minimum or maximum is unbounded, then FUU@ ge-the appropriate function returns #f. ڃaUUh -i [Class] mUU  liThis class is a subclass of . Instances of this class represent union types (ie, what type-union returns). The yUU@ esPfunction union-members returns a list of the member types in the union. d.k iefo$H/lk  *UU` spValues ::6UU`  ctypes :: laBUU`  Description clNUU  ntiReturns the member types of the union type. The result may contain more than two elements. This function dZUU@ er-collapses nested union types to a flat list. u` geMiscellaneous UU`  TThe Introspection module exports the following miscellaneous functionality: cUUh  o" object-address[Function] UU` io Arguments UU` onobject :: yUU` fuValues uUU` etaddress :: eUU` on Description dUU  wReturns an integer for object. If the object is represented internally represented as immediate data, then the UU sinteger returned is only unique to the value of the object. If the object is represented on the dynamic heap, then ts UU@ Cthe integer uniquely identifies the object from all other objects. UBU.TU hw  <The  Cheap-io Module CUU x N{The Cheap-io module exports some basic, unextendable I/O functionality. Gwydion compilers use the Cheap-io ZOUUx cofunctions internally. The Gwydion Project also provides the Streams, Print, and Format libraries (see the $INSTALL/e f[UUx  doc/libraries/ directory for documentation). It is an error to use both Cheap-IO functions and Streams/Print/ gUUx Format functions on a single stream. (For example, if you are using the Streams library *standard-input*, do not also use sUUx .the Cheap-io input functions) For this reason, if any library that you load into Mindy uses the Debugger-format library, oUU@x obFthe debugger will use format from the Format library. UUhy in format[Function] UU`z ot Arguments UU`{ w control-string :: CUU`| Th#rest arguments mUU`}  bValues xteUU`~ nameaningless :: singleton(#f) UU` Z Description x UU  te~This format adheres to the format strings described in the Dylan Interim Reference Manual with one exception. UU x Some Gwydion compilers incorrectly prints instances of  supplied to the %S directive. The Format riUU vlibrary provides a correct format function that supports an upward-compatible extension to the format control UU@  nstrings described in the DRM. -UUh  print[Function] s9UUh br Arguments EUU` object :: liQUU` Values th]UU` e meaningless :: singleton(#f) miUU`  Description inuUU  FuvPrints thing to stdout. Print follows thing with a newline. You cannot extend or specialize how objects are ~UU@  printed. d0mnes$H1nm eTh$Hredescribe ylTU TU ht l& xExtensions to the Streams Library UU`  cxThe Piped-exec module is a Gwydion extension to the Streams library. It exports the following function: 9UUh li& a wpiped-exec[Function] EUU` or Arguments QUU` iocommand :: l ]UU`  nValues deiUU` . writeable-stream :: uUU` 9readable-stream :: meUU`  Description : UU  lpiped-exec spawns a child process whose standard input and standard output are obtained from the parent inUU Fuyprocess. Specifically, the parents writeable-stream is attached to the childs standard input, and the parents UU prreadable-stream is attached to the childs standard output. The readable-stream will be closed when the child closes eUU nits standard output, or when the child process terminates. The child process will be spawned by executing the UU  {command line command. Unlike the system command, the command line is not passed to a shell, so no wildcard uncUU xexpansion will be done. Like system, however, if the command name is not a fully qualified path, the executable l UU@  nfile will be searched for. . UU`  :PCaveat: On Microsoft Windows machines, the command may not be a batch file. BU TU h  /Copyright and Terms of Use spa!UU`u s WCopyright (c) 1994, 1995, 1996, 1997 Carnegie Mellon University All rights reserved. Fu7UU v cauUse and copying of this software and preparation of derivative works based on this software are permitted, including CUU@v eaEcommercial use, provided that the following conditions are observed: aYUU w edhThis copyright notice must be retained in full on any copies and on appropriate parts of any derivative heeUU@w l works. d btUU x eDocumentation (paper or online) accompanying any system that incorporates this software, or any part nUU@x ll_of it, must acknowledge the contribution of the Gwydion Project at Carnegie Mellon University. f tUU y  nThis software is made available as is. Neither the authors nor Carnegie Mellon University make any warranty about the OnUU@y  mCsoftware, its performance, or its conformity to any specification.  UU(z rmg 0Bug reports, questions, comments, and suggestions should be sent by E-mail to the Internet address htsUU@z 7gwydionbugs@cs.cmu.edu. UU`{  a pH$ AsofH$ lCC) ialHw AsreHw lDD* be H$ ApatH$ lEE+ tHw AneHw lFF,  anHH AcowHHlGG- lonHH!AstwHHlHH.  Cal" "Bautl" lII/ ts H #BH lJJ0 ns $H$Bdss$HlKK1 $H%Y$HlZZ2 $H&[$Hl\\2 $H']$Hl^^2 $H(_$Hl``2 $H)a$Hlbb2 $H*c$Hldd2 $H+e$Hlff2 $H,g$Hlhh2 $H-i$Hljj2 $H.k$Hlll2 $H/m$Hlnn2  dALeftdBRightdL ReferencedYd[ld]`d_dadcdedgdidd kd mHm{1$0fmQ %  1Heading 1Heading Rule. FirstBody. $$fnSE( *$ 1Step Step Number S:.\tStep. fo % 2Heading .. . ff2ff233@p %H    h  Argument.  @q %kH     h  Body. 33+33$frB %ul33+n Bullet Bullet SymbolB:\t. ]K$fsB % ]m Bullet2. Bullet SymbolB:\t. 33+33+$ft %CBullet. HHH@u % H    h e Copyright. $$$fv *CStep. ff2ff233@w %H    h ln Description. dd33@x %H m t u th : Description2. ff233@y %HH    h  DItem. KK@z! %$H    h  DItem2. 33 @+ %33 Endnote.\t. 33 @+ %33 Endnote1.\t. 333333 @  %He i   h  Excerpt. ff2K33@ %H I    h  Extra Key Arg. ff2ff2 @ % H2    h  Function Body. @P % Function HeadDItem. HHH fT % HeadingBody. HHHfD %  HeadingSub. $$fS( *$ Step Step Number S:.\t. @ H    h  Verbatim. f * CellHeading. f *CellBody. fT& *  TableTitleT:Table : . @ %H    h  Body. @ %  Body. @ %Body. HHH fT % HeadingBody. HHH@ %H    h  Copyright. $0fQ %  1Heading 1Heading Rule. FirstBody. 33+33$fB %33+ Bullet Bullet SymbolB:\t. @ %H    hy  Body.  @ dyH    h  Verbatim. f % 2Heading .. . @ eaHl   i  h  Verbatim. 33+33+$f %CBullet. 33+33$ fB %33+ Bullet Bullet SymbolB:\t. ff2ff233@ %Hy    h   Descriptionb. ff233@ %Ha g n   h  DItem. @ % Function Head. ff2ff2 @ %H    h  Function Body. ff2ff233@ %H    h  Argument. @P % Function HeadDItem. ff2ff233@ % H    h  Argument. @P %  Function HeadDItem. @P % B Function HeadDItem.  Vz *  % Variable  *   %Argument    Bullet Symbol@ %  @ %   %  %  % _   Computer  %Emphasis  EquationVariables    Step Number   Subscript@   Superscript  % Variable  %Emphasis oc;   Bullet Symbol _ Computer @ % Variable  %Argument  % @ %     Thin Medium Double Thick@  Very Thinh     HHHHHFormat A    iHHHHHFormat Ba q b a Comment   U V / W X < Z Y le g % < ;   ) D C  * G F  d Black!T WhiteddA Reddd Greendd BluedCyand Magentad ThYellowW.Palatino.R.700 Palatino-Bold W.Times.R.400i 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 Helvetica%Palatino*Times Regular Regular BoldItalicRegular$3 dBɡ xRzC|f3Uڙ+sQHD|><8dU^M<#tsciaa__.1Pk1Aݏt ltHJuM9؀V,(a'ɜtj0ȾۀDw#aPB5% _p]~ ϱnX>ip{ _%o$I(ѷ:,-K1ݿg G-7]O/":AũfQ%qRj