[MLton-commit] r6143
Vesa Karvonen
vesak at mlton.org
Thu Nov 8 11:25:18 PST 2007
Manifesto.
----------------------------------------------------------------------
A mltonlib/trunk/org/mlton/vesak/use-lib/unstable/README
----------------------------------------------------------------------
Added: mltonlib/trunk/org/mlton/vesak/use-lib/unstable/README
===================================================================
--- mltonlib/trunk/org/mlton/vesak/use-lib/unstable/README 2007-11-08 19:20:16 UTC (rev 6142)
+++ mltonlib/trunk/org/mlton/vesak/use-lib/unstable/README 2007-11-08 19:25:18 UTC (rev 6143)
@@ -0,0 +1,94 @@
+UseLib
+------
+
+ This library implements a simple library and program definition
+ framework based on the de facto standard use-function provided by most
+ SML implementations with a REPL.
+
+
+Info
+----
+
+ License: MLton license (a BSD-style license)
+ Portability: requires the use-function
+ Supports: Moscow ML, Poly/ML, and SML/NJ
+ Stability: experimental
+ Maintainer: Vesa Karvonen <vesa.a.j.k at gmail.com>
+
+
+About Library Organization
+--------------------------
+
+ public/
+
+ This directory contains the documented signature definitions (*.sig)
+ and listings of all top-level bindings exported by this library
+ (export.sml). The contents of this directory should ideally provide
+ sufficient documentation to use the library.
+
+ {mosml,polyml,smlnj}.use
+
+ These build files define the framework.
+
+ detail/
+
+ This directory contains the implementation details of the library.
+
+ detail/ml/$(SML_COMPILER)/
+
+ These directories (e.g. detail/ml/mlton/) contain compiler specific
+ implementation details.
+
+
+Motivation
+----------
+
+ The Definition of Standard ML does not specify nor is there a de facto
+ standard on how a SML program composed of multiple source files is
+ compiled. Each SML implementation has its own mutually incompatible
+ extensions for that purpose. For example, SML/NJ has the "Compilation
+ Manager", MLton and MLKit have the "ML Basis System", Poly/ML has the
+ "Make System". Getting a program composed of a large number of source
+ files organized into libraries to compile on multiple SML
+ implementations is a non-trivial task.
+
+ In addition to the more sophisticated and mutually incompatible systems
+ mentioned earlier, most interactive SML implementations, including
+ Alice ML, HaMLet, Moscow ML, Poly/ML, and SML/NJ, provide a crude
+ top-level bound function with the specification
+
+ val use : string -> unit
+
+ for loading new source files interactively as if the contents of the
+ source file were entered at the top-level. This library builds on the
+ use-function provided by an implementation to create a system that
+ allows one to define libraries and programs by writing SML source files
+ that one can then load using the use-function. When defined carefully,
+ such use files can work on multiple implementations --- possibly even
+ on all implementations providing a use function.
+
+ Frankly, however, this library should be regarded as a workaround. It
+ would be much better if all SML implementations would support the ML
+ Basis System or the Compilation Manager or something even better.
+
+
+Contributions
+-------------
+
+ The signatures and structures defined by this library are not meant to
+ be cast in stone! We welcome contributions including new functionality,
+ bug fixes, and ports to new compilers. The recommended submit method
+ for small contributions to this library is to send a message with a
+ brief description of the proposed contribution as well as a patch
+ containing full code and documentation (signature comments) to either
+ the MLton-user list
+
+ mlton-user at mlton.org
+
+ or the MLton list
+
+ mlton at mlton.org .
+
+ For larger extensions or changes we recommend that you first contact
+ the active maintainer(s) of this library. The preferred contact method
+ is through the above mailing lists.
More information about the MLton-commit
mailing list