VERSION 4.1.02 of Edinburgh Standard ML (core language) ======================================================= This tape/directory contains a version of the Standard ML core language for UNIX 4.xBSD as it appears in the The Definition of Standard ML - Milner,Tofte,Harper (MIT Press 1990) ================================================================== Please complete the licence agreement at the end of this file and return to LFCS. ================================================================== Before using the system, you will need to perform the following steps: 1) Create the abstract machine with the filename fam by renaming a file of the form fam.machine, if you are running on a Sun (3 or 4), HP 9000 series workstation or DEC mips workstation For any other machine, you will need to run the command 'make fam' in the fam.src directory to create a fam file. 2) Edit "config.sml" if you want the ML system to read from a standard startup file when it begins. In the release, this is "/usr/lib/.smlrc" (duplicated in the release as ".smlrc"), which tries to open "~user/.smlrc" if this exists. 3) Run the command 'ml smlcore.exp.backup < config.sml' which should produce a file called smlcore.exp. This file should then be installed in a publicly accessible directory. 4) Alter the paths in the file ml to point to the directories containing the fam and smlcore.exp files. Install this file in a publicly accessible executables directory. 5) The system may then be invoked by executing the file ml. Source files of the abstract machine are in the directory fam.src. Rebuilding the fam, or porting to another machine, may be trivial or may be quite hard work, depending on how brain-damaged your hardware/OS/C compiler is. The changes should be localised to system.c and system.h via a number of #define statements - see what's already there. There's a revision history at the top of the main source file, fam.c. See Port.doc for some help. DIFFERENCES FROM PREVIOUS VERSIONS ---------------------------------- (4.0) - Numerically labelled records have been implemented - singly labelled record pattern bug has been fixed - exceptions Match, Bind, Abs and Neg are implemented as in the language definition version 4 (4.1) - Exception traceback mechanism introduced - GNU bash Readline library incorporated for interactive line editing (4.1.2) - Archimedes port (may ease porting to other machines), SGI 4d port, DEC mips port ---------------------------------- This version of Standard ML has a number of known deficiencies including... - The exhaustiveness checking does not always report warnings when it should. Furthermore, the algorithm used to check the patterns is exponential, although in many cases this is not a problem. The exhaustiveness checking is controlled by the CheckMatch flag in the Debug variable see the man pg for details. - Parse errors are not always very helpful! There are a few non-standard features that are available, including ExportML : string * string * string list -> unit This takes a file name, a banner message, and a list of files to load on start-up, and saves away the current state of the system in the file with the given file name. Assuming that a saved state was placed in file fred.exp, then it may be restarted by executing "ml fred.exp". Any streams that were open when the export occurred will fail with the error "stream link lost" if used when the state is reimported. 'New' versions of std_in and std_out may be obtained by calling the function stdio: unit -> (instream * outstream). Print and Debug are variables that affect the underlying compiler. They are records, and the field names should indicate what most of the fields do. See the man pg for details The SML core language environment contains various library functions which are described in the file LIBINFO. In addition to the built-in library functions, there are also library packages for array and byte_array manipulations. These packages can be loaded directly from the files core_array.sml and core_barray.sml respectively. Please report any comments/faults to LFCS, Tel: 031-650-5198 Department of Computer Science, Telex: 727442 (UNIVED G) University of Edinburgh, E-Mail: ml@uk.ac.ed.lfcs King's Buildings, Fax: 031-667-7209 Edinburgh, EH9 3JZ UK ======================================================================== Laboratory for Foundations of Computer Science ---------------------------------------------- Department of Computer Science - University of Edinburgh Standard ML Licence Agreement ----------------------------- Return one copy of this document to LFCS Software Distribution at the address below and keep one copy for your records. LFCS, Tel: 031-650-5198 Department of Computer Science, Telex: 727442 (UNIVED G) University of Edinburgh, E-Mail: ml@uk.ac.ed.lfcs King's Buildings, Fax: 031-667-7209 Edinburgh, EH9 3JZ UK I, the licensee, agree to the conditions below in respect of the Standard ML System supplied by the Laboratory for Foundations of Computer Science of the University of Edinburgh. Signed: ____________________________ Date:________________________ Name(printed): ____________________________________________________________ Title: ____________________________________________________________ Organisation: ____________________________________________________________ Address: ____________________________________________________________ ____________________________________________________________ Telephone: __________________ Electronic Mail: ________________________ Conditions of Licence: 1. Title to and copyright of the Standard ML System remains with the Laboratory for Foundations of Computer Science at the University of Edinburgh. 2. The ML System may be used freely within the licensee's organisation for research and educational purposes. Commercial and revenue earning use are excluded form this agreement. Evaluation for potential commercial use is permitted, but licencees are advised to contact LFCS in advance of this activity. 3. The licensee will not pass the ML System to anyone outside their organisation unless they are already signatories to this licence in which case the system may be copied to them under the same terms as this licence. No charge may be levied for this distribution. 4. The licensee accepts the ML system "as is". The University of Edinburgh makes no warranty in respect of the ML System. Nevertheless licensees are encouraged to report to LFCS any problems with or suggestions for improvement of the the ML System. 5. The licensee may modify the supplied ML System on condition that any significant changes are notified to LFCS and made available to LFCS such that they may be incorporated within future releases of the ML System and licenced under the conditions of this licence agreement. "Significant changes" will include, for example, changes to the language accepted by the system or ports to previously unsupported host computer types. Licencees are strongly advised to consult LFCS before starting such work in order to avoid duplication and to assess the feasibility of the work. 6. Licencees will acknowledge LFCS and The University of Edinburgh as the designers of the ML language and implementors of this implementation in any relevant document or publication.