Structure General

Identifier index Structure index

(* SML Basis Library and Moscow ML top-level declarations *)

(* SML Basis Library types *)

type     exn
eqtype   unit
datatype order = LESS | EQUAL | GREATER

(* Additional Moscow ML top-level types *)

datatype bool = false | true
eqtype char
eqtype int
datatype 'a option = NONE | SOME of 'a
type ppstream
eqtype real
eqtype string
type substring
type syserror
type 'a vector
eqtype word
eqtype word8
datatype 'a list = nil | op :: of 'a * 'a list
datatype 'a ref  = ref of 'a 
datatype 'a frag = QUOTE of string | ANTIQUOTE of 'a

(* SML Basis Library exceptions *)

exception Bind
exception Chr
exception Div
exception Domain
exception Fail of string
exception Match
exception Overflow
exception Option
exception Subscript
exception Size
exception Span

(* Additional Moscow ML top-level exceptions *)

exception Graphic of string
exception Interrupt
exception Invalid_argument of string
exception Io of {function : string, name : string, cause : exn }
exception Out_of_memory
exception SysErr of string * syserror option

(* SML Basis Library values *)

val !          : 'a ref -> 'a
val :=         : 'a ref * 'a -> unit

val o          : ('b -> 'c) * ('a -> 'b) -> ('a -> 'c)
val ignore     : 'a -> unit
val before     : 'a * unit -> 'a

val exnName    : exn -> string
val exnMessage : exn -> string

(* Additional Moscow ML top-level values *)

val not    : bool -> bool
val ^      : string * string -> string

val =      : ''a * ''a -> bool
val <>     : ''a * ''a -> bool

val ceil   : real -> int                (* round towards plus infinity  *)
val floor  : real -> int                (* round towards minus infinity *)
val real   : int -> real                (* equals Real.fromInt          *)
val round  : real -> int                (* round to nearest even        *)
val trunc  : real -> int                (* round towards zero           *)

val vector : 'a list -> 'a vector

(* Below, numtxt is int, Word.word, Word8.word, real, char, string: *)

val <   : numtxt * numtxt -> bool
val <=  : numtxt * numtxt -> bool
val >   : numtxt * numtxt -> bool
val >=  : numtxt * numtxt -> bool

val makestring : numtxt -> string

(* Below, realint is int or real:                                       *)

val ~   : realint -> realint            (* raises Overflow              *)
val abs : realint -> realint            (* raises Overflow              *)
(* Below, num is int, Word.word, Word8.word, or real:                   *)

val +   : num * num -> num              (* raises Overflow              *)
val -   : num * num -> num              (* raises Overflow              *)
val *   : num * num -> num              (* raises Overflow              *)
val /   : real * real -> real           (* raises Div, Overflow         *)
(* Below, wordint is int, Word.word or Word8.word:                      *)

val div : wordint * wordint -> wordint  (* raises Div, Overflow         *)
val mod : wordint * wordint -> wordint  (* raises Div                   *)

   [exn] is the type of exceptions.
   [unit] is the type containing the empty tuple () which equals the 
   empty record { }.

   [order] is used as the return type of comparison functions.

   [bool] is the type of booleans: false and true.  Equals Bool.bool.

   [char] is the type of characters such as #"A".  Equals Char.char.

   [int] is the type of integers.  Equals

   [option] is the type of optional values.  Equals Option.option.

   [ppstream] is the type of pretty-printing streams, see structure PP.  
   Pretty-printers may be installed in the top-level by function 
   Meta.installPP; see the Moscow ML Owner's Manual.

   [real] is the type of floating-point numbers.  Equals Real.real.

   [string] is the type of character strings.  Equals String.string.

   [substring] is the type of substrings.  Equals Substring.substring.

   [syserror] is the abstract type of system error codes.  
   Equals OS.syserror. 

   [vector] is the type of immutable vectors.  Equals Vector.vector.
   [word] is the type of unsigned words.  Equals Word.word.

   [word8] is the type of unsigned bytes.  Equals Word8.word.

   ['a list] is the type of lists of elements of type 'a.  
   Equals List.list.

   ['a ref] is the type of mutable references to values of type 'a.

   ['a frag] is the type of quotation fragments, resulting from the
   parsing of quotations ` ... ` and antiquotations.  See the Moscow
   ML Owner's Manual.

   [Bind] is the exception raised when the right-hand side value in a
   valbind does not match the left-hand side pattern.

   [Chr] signals an attempt to produce an unrepresentable character.

   [Div] signals an attempt to divide by zero.
   [Domain] signals an attempt to apply a function outside its domain
   of definition; such as computing Math.sqrt(~1).

   [Fail] signals the failure of some function, usually in the Moscow
   ML specific library structures.

   [Match] signals the failure to match a value against the patterns
   in a case, handle, or function application.

   [Option] is raised by Option.valOf when applied to NONE.

   [Overflow] signals the attempt to compute an unrepresentable number.

   [Subscript] signals the attempt to use an illegal index in an
   array, dynarray, list, string, substring, vector or weak array.

   [Size] signals the attempt to create an array, string or vector
   that is too large for the implementation.

   [Graphic] signals the failure of Graphics primitives (DOS only).

   [Interrupt] signals user interrupt of the computation.

   [Invalid_argument] signals the failure of a function in the runtime 

   [Io { function, name, cause }] signals the failure of an
   input/output operation (function) when operating on a file (name).
   The third field (cause) may give a reason for the failure.

   [Out_of_memory] signals an attempt to create a data structure too
   large for the implementation, or the failure to extend the heap or

   [SysErr (msg, err)] signals a system error, described by msg.  A
   system error code may be given by err.  If so, it will usually hold
   that msg = OS.errorMsg err.

   SML Basis Library values 

   [! rf] returns the value pointed to by reference rf.

   [:=(rf, e)] evaluates rf and e, then makes the reference rf point to
   the value of e.  Since := has infix status, this is usually written
        rf := e

   [o(f, g)] computes the functional composition of f and g, that is,
   fn x => f(g x).  Since  o  has infix status, this is usually written
        f o g

   [ignore e] evaluates e, discards its value, and returns () : unit.

   [before(e1, e2)] evaluates e1, then evaluates e2, then returns the
   value of e1.  Since  before  has infix status, this is usually written
        e1 before e2

   [exnName exn] returns a name for the exception constructor in exn.  
   Never raises an exception itself.  The name returned may be that of
   any exception constructor aliasing with exn.  For instance,
        let exception E1; exception E2 = E1 in exnName E2 end
   may evaluate to "E1" or "E2".

   [exnMessage exn] formats and returns a message corresponding to
   exception exn.  For the exceptions defined in the SML Basis Library, 
   the message will include the argument carried by the exception.

   Additional Moscow ML top-level values

   [not b] returns the logical negation of b.

   [^] is the string concatenation operator.

   [=] is the polymorphic equality predicate.

   [<>] is the polymorphic inequality predicate.

   [ceil r] is the smallest integer >= r (rounds towards plus infinity).
   May raise Overflow.

   [floor r] is the largest integer <= r (rounds towards minus infinity).
   May raise Overflow.

   [real i] is the floating-point number representing integer i.
   Equivalent to Real.fromInt.

   [round r] is the integer nearest to r, using the default rounding
   mode.  May raise Overflow.

   [trunc r] is the numerically largest integer between r and zero
   (rounds towards zero).  May raise Overflow.

   [vector [x1, ..., xn]] returns the vector #[x1, ..., xn].

   [< (x1, x2)] 
   [<=(x1, x2)]
   [> (x1, x2)]
   [>=(x1, x2)]

   These are the standard comparison operators for arguments of type
   int, Word.word, Word8.word, real, char or string.

   [makestring v] returns a representation of value v as a string, for
   v of type int, Word.word, Word8.word, real, char or string.

   [~ x] is the numeric negation of x (which can be real or int).  May
   raise Overflow.

   [abs x] is the absolute value of x (which can be real or int).  May
   raise Overflow.
   [+ (e1, e2)]
   [- (e1, e2)]
   [* (e1, e2)]

   These are the standard arithmetic operations for arguments of type
   int, Word.word, Word8.word, and real.  They are unsigned in the
   case of Word.word and Word8.word.  May raise Overflow.

   [/ (e1, e2)] is the floating-point result of dividing e1 by e2.
   May raise Div and Overflow.
   [div(e1, e2)] is the integral quotient of dividing e1 by e2 for
   arguments of type int, Word.word, and Word8.word.  See Int.div and
   Word.div for more details.  May raise Div, Overflow.

   [mod(e1, e2)] is the remainder when dividing e1 by e2, for
   arguments of type int, Word.word, and Word8.word.  See Int.mod and
   Word.mod for more details.  May raise Div.

Identifier index Structure index

Moscow ML 2.10