% Copyright The Numerical Algorithms Group Limited 1991. % Certain derivative-work portions Copyright (C) 1988 by Leslie Lamport. % All rights reserved \begin{page}{helpExpose}{Exposure} \beginscroll Exposure determines what part of the \Language{} library is available to you when using \Language{}. At any time during your interactive \Language{} session, each constructor is either {\em exposed} or {\em unexposed}. If a constructor is exposed, its operations are available to the interpreter and therefore to you. If a constructor is unexposed, the operations are not seen by the interpreter and thus not available to you. \par If you are a beginner, you may only want basic parts of the library exposed. If you are an expert, you may want to have all parts of the library exposed. If you have an application that requires only a segment of the library, you may want to arrange to expose only that segment for your use. \par \endscroll Additional Information: \beginmenu \menulink{What}{ExposureDef}\tab{8}What is an exposure group? \menulink{System}{ExposureSystem}\tab{8}What exposure groups are system defined? % \menulink{User}{ExposureUser}\tab{8}How can I define my own? \menulink{Details}{ExposureDetails}\tab{8}Some details on exposure \endmenu \end{page} \begin{page}{ExposureSystem}{System Defined Exposure Groups} \beginscroll Exposure is defined by {\em groups}. Groups have names. Seven exposure groups are system-defined:\beginmenu \item\tab{3}{\em current}\tab{12}The currently active exposure group \item\tab{3}{\em basic}\tab{12}The default value of {\em current} \item\tab{3}{\em category}\tab{13}Category constructors not in {\em basic} \item\tab{3}{\em domain}\tab{13}Domain constructors not in {\em basic} \item\tab{3}{\em package}\tab{13}Package constructors not in {\em basic} \item\tab{3}{\em default}\tab{13}Default constructors not in {\em basic} \item\tab{3}{\em hidden}\tab{13}All constructors not in {\em basic} \item\tab{3}{\em naglink}\tab{13}All constructors used in the AXIOM NAG Link \endmenu \par When you first use \Language{}, the {\em current} exposure group is set to {\em basic} and {\em naglink}. Using \HyperName{} or the system command {\em expose}, you may change the current exposure group by adding or dropping constructors or by setting {\em current} to an exposure group you have created. \endscroll Additional Information: \beginmenu \menulink{What}{ExposureDef}\tab{10}What is an exposure group? %\menulink{User}{ExposureUser}\tab{10}How you can define your own exposure group \endmenu \end{page} \begin{page}{ExposureDef}{What is an Exposure Group?} \beginscroll \par An exposure group is a list of constructors to be exposed. Those constructors on the list are exposed; those not on the list are not exposed. The library contains 4 kinds of constructors intuitively described as follows: \beginmenu \item\menuitemstyle{}{\em domain}\tab{10}Describes computational objects and functions defined on these objects \item\menuitemstyle{}{\em package}\tab{10}Describes functions which will work over a variety of domains \item\menuitemstyle{}{\em category}\tab{10}Names a set of operations \item\menuitemstyle{}{\em default}\tab{10}Provides default functions for a cateogry \endmenu An exposure group is defined by three lists: \beginmenu \item\menuitemstyle{}{\em groups}\tab{13}A list of other (more basic) groups \item\menuitemstyle{}{\em additions}\tab{13}A list of explicit constructors to be included \item\menuitemstyle{}{\em subtractions}\tab{13}A list of explicit constructors to be dropped \endmenu You can define your own exposure groups: give them names and define the three above lists to be anything you like. Using \HyperName{}, you can conveniently edit your exposure groups, install them as the {\em current} exposure, and so on. \endscroll \end{page} \begin{page}{ExposureDetails}{Details on Exposure} \beginscroll Exposure is generally defined by the set of domain and package constructors you want to have available. Category and default constructors are generally implied. A category constructor is exposed if mentioned by {\em any} other constructor (including another category). A default constructor is exposed if its corresponding category constructor is exposed. \par If you explicitly add a domain or package constructor, its name will be put in an {\em Additions} list. The system will also add automatically to the {\em Additions} list any category explicity exported by that domain or package. If that category has a corresponding default constructor, that default constructor will also be added as well. \par If you like, you can explicitly drop a constructor. Any such name is added to the {\em Subtractions} list. The system will drop this name from the {\em Additions} list if it appears. \par If the package or domain takes arguments from an unexported domain or declares that its arguments can come from a domain which is a member of an unexported category, these constructors will {\em not} be added. \endscroll \end{page}