<!-- lib-base.mldoc -->
<!-- Entities.sgml entry 
<!ENTITY LibBase SDATA "lib-base-sig.sml">
 -->

<!DOCTYPE ML-DOC SYSTEM>

<COPYRIGHT OWNER="Bell Labs, Lucent Technologies" YEAR=1998>
<VERSION VERID="1.1" YEAR=1998 MONTH=5 DAY=6>
<TITLE>The LibBase structure</TITLE>

<INTERFACE>
<HEAD>The <CD/LibBase/ structure</HEAD>
<!-- optional SEEALSO; uncomment to use     -->
<!-- <SEEALSO>    -->
<!--   non-empty list of XREFS here   -->
<!-- </SEEALSO>    -->

<PP>
The <STRREF NOLINK/LibBase/ structure provides a set of 
common types, exceptions, and utility functions for the library.
Although defined and used within the library, the components
of <STRREF NOLINK/LibBase/ are meant to be used by program built
on top of the library. For example, most code has need of an
<CD/Unimplemented/ exception to flag code yet to be written, or
an <CD/Impossible/ exception, to mark cases that should not occur.

<STRUCTURE STRID="LibBase">
  <SIGBODY SIGID="LIB_BASE" FILE=LIB-BASE>
    <SPEC>
      <EXN>Unimplemented<TY>string
      <COMMENT>
      <PP>
        Raised to report unimplemented features.
    <SPEC>
      <EXN>Impossible<TY>string
      <COMMENT>
      <PP>
        Raised to report internal errors.
    <SPEC>
      <EXN>NotFound
      <COMMENT>
      <PP>
        Raised to indicate various search failures.
    <SPEC>
      <VAL>failure<TY>{module : string, func : string, msg : string} -> 'a
      <RAISES><EXNREF DOCUMENT=SML-BASIS-DOC STRID="General"/Fail/
        <COMMENT>
          <PROTOTY>
          failure {<ARG/module/, <ARG/func/, <ARG/msg/}
          </PROTOTY>
    raises the exception <EXNREF DOCUMENT=SML-BASIS-DOC STRID="General"/Fail/
    with a standard message format. By convention, <ARG/func/ and <ARG/module/ 
    should be the names of the function and structure, respectively, in 
    which the failure occurs. The <ARG/msg/ string should provide additional
    information as to the cause or location of the problem. 
    <SPEC>
      <VAL>version<TY>{date : string, system : string, version_id : int list}
        <COMMENT>
          <PROTOTY>
          version
          </PROTOTY>
      is a record providing information about the library version in a
      conventional format. The <CD/system/ field specifies the subsystem
      involved, in this case the SML/NJ library; the <CD/date/ field gives 
      the date of the release; the <CD/version_id/ field provides a list
      of integers indicating the major and various minor release numbers
      associated with the current release. The closer to the head of the
      list, the more significant is the release number; in particular, the
      head of <CD/version_id/ is the major release number.
    <SPEC>
      <VAL>banner<TY>string
        <COMMENT>
          <PROTOTY>
          banner
          </PROTOTY>
        encodes the information in <CD/version/ as a string, e.g., 
        <CD/"SML/NJ Library, Version 1.0, June 1, 1996".
</STRUCTURE>

</INTERFACE>
