# standard-core.sublib
#
# The implementation of the Basis.
#
# Compiled by:
#
src/lib/std/standard.libSUBLIBRARY_EXPORTS
api Rw_Vector
api Rw_Vector_Slice
api Rw_Matrix
api Graph_By_Edge_Hashtable
api Vector
api Vector_Slice
api Exceptions_Guts
api Int
api Multiword_Int
api Bool
api Catlist
api Char
api Mythryl_Callable_C_Library_Interface
api String
api Substring
api Number_String
api List_Sort
api List
api Typelocked_Rw_Matrix
api Typelocked_Rw_Vector
api Typelocked_Rw_Vector_Slice
api Typelocked_Matrix
api Typelocked_Vector
api Typelocked_Vector_Slice
api Unt
api Byte
api Date
api Ieee_Float
api Paired_Lists
api Null_Or
api Float
api Time
api Cpu_Timer
api Wallclock_Timer
api Math
api Winix__Premicrothread
api Winix_File
api Winix_Io__Premicrothread
api Winix_Path
api Winix_Process__Premicrothread
api Interprocess_Signals
api Winix_Data_File_For_Os__Premicrothread
api Winix_File_For_Os__Premicrothread
api Io_Exceptions
api Winix_Extended_File_Io_Driver_For_Os__Premicrothread
api Winix_Base_File_Io_Driver_For_Os__Premicrothread
api Winix_Pure_File_For_Os__Premicrothread
api Winix_Text_File_For_Os__Premicrothread
api Winix_Pure_Text_File_For_Os__Premicrothread
api Pack_Unt
api Pack_Float
api Text
api Bit_Flags
# Lib7 specific:
api Run_At__Premicrothread
pkg run_at__premicrothread
api Fate
api Set_Sigalrm_Frequency
api Runtime_Internals
api Platform_Properties
api Weak_Reference
api Lazy
api Lib7
api Heapcleaner_Control
pkg heapcleaner_control
api Heap_Debug
pkg heap_debug
api Unsafe_Chunk
api Software_Generated_Periodic_Events
api Unsafe_Rw_Vector
api Unsafe_Vector
api Unsafe_Typelocked_Rw_Vector
api Unsafe_Typelocked_Vector
api Unsafe
api Say
# Basis:
pkg software_generated_periodic_events
pkg mythryl_callable_c_library_interface
pkg vector
pkg vector_slice
pkg exceptions_guts
pkg number_string
pkg vector_slice_of_chars
pkg rw_vector_slice_of_chars
pkg text
pkg list
pkg paired_lists
pkg rw_vector
pkg rw_vector_slice
pkg rw_matrix
pkg graph_by_edge_hashtable
pkg ieee_float
pkg int_guts
pkg tagged_int_guts
pkg one_word_int_guts
pkg two_word_int
pkg multiword_int_guts
pkg large_int_imp
pkg fixed_int_imp
pkg large_unt_guts
pkg math
pkg file_position_guts
pkg eight_byte_float_guts
pkg unt_guts
pkg list_mergesort
pkg tagged_unt_guts
pkg one_word_unt_guts
pkg two_word_unt
pkg bool
pkg catlist
pkg one_byte_unt_guts
pkg vector_of_one_byte_unts
pkg vector_slice_of_one_byte_unts
pkg rw_vector_of_one_byte_unts
pkg rw_vector_slice_of_one_byte_unts
pkg host_unt_guts
pkg time_guts
pkg cpu_timer
pkg wallclock_timer
pkg byte
pkg log
pkg winix_guts
pkg null_or
pkg data_file__premicrothread
pkg winix_file_io_mutex
pkg winix_data_file_for_posix__premicrothread
pkg winix_text_file_io_driver_for_posix__premicrothread
pkg winix_data_file_io_driver_for_posix__premicrothread
pkg winix_base_data_file_io_driver_for_posix__premicrothread
pkg io_exceptions
pkg pack_big_endian_unt16
pkg pack_little_endian_unt16
pkg pack_big_endian_unt1
pkg pack_little_endian_unt1
pkg internal_cpu_timer
pkg winix_types
pkg winix_text_file_for_posix__premicrothread
pkg file__premicrothread # Synonym for winix_text_file_for_posix__premicrothread
# ?Should there be a platform-dependent #IF setting 'file' to be either
# winix_text_file_for_posix__premicrothread or
# winix_text_file_for_win32__premicrothread XXX QUERO FIXME
pkg winix_base_text_file_io_driver_for_posix__premicrothread
pkg date
pkg rw_matrix_of_eight_byte_floats
pkg rw_matrix_of_one_byte_unts
pkg rw_vector_of_eight_byte_floats
pkg vector_of_eight_byte_floats
pkg rw_vector_slice_of_eight_byte_floats
pkg vector_slice_of_eight_byte_floats
pkg exception_name
api Io_Startup_And_Shutdown__Premicrothread
pkg io_startup_and_shutdown__premicrothread
generic winix_base_file_io_driver_for_posix_g__premicrothread
# SML/NJ-specific:
#
pkg interprocess_signals
pkg unsafe
pkg lib7
pkg save_heap_to_disk api Save_Heap_To_Disk
pkg fate
pkg set_sigalrm_frequency
pkg runtime_internals
pkg platform_properties
pkg weak_reference
pkg lazy
pkg suspension
pkg say
pkg runtime
#if defined(OPSYS_UNIX) or defined(OPSYS_WIN32)
# Sockets (common part):
api Dns_Host_Lookup
api Net_Protocol_Db
api Net_Service_Db
api Synchronous_Socket
api Socket__Premicrothread
api Internet_Socket__Premicrothread
api Plain_Socket__Premicrothread
pkg plain_socket__premicrothread
pkg dns_host_lookup
pkg net_protocol_db
pkg net_service_db
pkg socket_guts
pkg internet_socket__premicrothread
#endif
#if defined(OPSYS_UNIX)
# Posix:
api Posix_Error
# api Posix_Signal
api Posix_Process
api Posix_Id
api Posix_File
api Posix_Io
api Posix_Etc
api Posix_Tty
api Posixlib
pkg posixlib
# Unix:
api Spawn__Premicrothread
pkg spawn__premicrothread
# Sockets (Unix part):
api Net_Db
api Unix_Domain_Socket__Premicrothread
pkg net_db
pkg unix_domain_socket__premicrothread
#elif defined (OPSYS_WIN32)
api Win32_General
api Win32_Process
api Win32_File_System
api Win32_Io
api Win32
pkg win32
#endif
api Hostthread
pkg hostthread
pkg proto_socket__premicrothread # 2009-11-15 CrT
api Int_Chartype
pkg int_chartype
api String_Chartype
pkg string_chartype
SUBLIBRARY_COMPONENTS
$ROOT/src/lib/core/init/init.cmi : cm
$ROOT/
src/lib/std/types-only/types-only.sublib $ROOT/
src/lib/std/src/nj/run-at--premicrothread.api $ROOT/
src/lib/std/src/nj/run-at--premicrothread.pkg $ROOT/
src/lib/std/src/nj/lib7.pkg $ROOT/
src/lib/std/src/nj/interprocess-signals.api $ROOT/
src/lib/std/src/nj/interprocess-signals-guts.pkg $ROOT/
src/lib/std/src/nj/interprocess-signals.pkg $ROOT/
src/lib/std/src/nj/weak-reference.api $ROOT/
src/lib/std/src/nj/weak-reference.pkg $ROOT/
src/lib/std/src/nj/lazy.api $ROOT/
src/lib/std/src/nj/lazy.pkg $ROOT/
src/lib/std/src/nj/save-heap-to-disk.api $ROOT/
src/lib/std/src/nj/save-heap-to-disk.pkg $ROOT/
src/lib/std/src/nj/set-sigalrm-frequency.api $ROOT/
src/lib/std/src/nj/set-sigalrm-frequency.pkg $ROOT/
src/lib/std/src/nj/platform-properties.api $ROOT/
src/lib/std/src/nj/platform-properties.pkg $ROOT/
src/lib/std/src/nj/runtime-profiling-control.api $ROOT/
src/lib/std/src/nj/runtime-profiling-control.pkg $ROOT/
src/lib/std/src/nj/heap-debug.api $ROOT/
src/lib/std/src/nj/heap-debug.pkg $ROOT/
src/lib/std/src/nj/heapcleaner-control.api $ROOT/
src/lib/std/src/nj/heapcleaner-control.pkg $ROOT/
src/lib/std/src/nj/print-hook.pkg $ROOT/
src/lib/std/src/nj/runtime-internals.api $ROOT/
src/lib/std/src/nj/runtime-internals.pkg $ROOT/
src/lib/std/src/nj/fate.api $ROOT/
src/lib/std/src/nj/fate.pkg $ROOT/
src/lib/std/src/nj/lib7.api $ROOT/
src/lib/std/src/nj/suspension.pkg $ROOT/
src/lib/std/src/unsafe/mythryl-callable-c-library-interface.api $ROOT/
src/lib/std/src/unsafe/mythryl-callable-c-library-interface.pkg $ROOT/
src/lib/std/src/unsafe/software-generated-periodic-events.api $ROOT/
src/lib/std/src/unsafe/software-generated-periodic-events.pkg $ROOT/
src/lib/std/src/unsafe/unsafe-chunk.api $ROOT/
src/lib/std/src/unsafe/unsafe-chunk.pkg $ROOT/
src/lib/std/src/unsafe/unsafe-rw-vector.api $ROOT/
src/lib/std/src/unsafe/unsafe-vector.api $ROOT/
src/lib/std/src/unsafe/unsafe-typelocked-rw-vector.api $ROOT/
src/lib/std/src/unsafe/unsafe-typelocked-vector.api $ROOT/
src/lib/std/src/unsafe/unsafe.api $ROOT/
src/lib/std/src/unsafe/unsafe.pkg $ROOT/
src/lib/std/src/winix/winix--premicrothread.api $ROOT/
src/lib/std/src/winix/winix-file.api $ROOT/
src/lib/std/src/winix/winix-path.api $ROOT/
src/lib/std/src/winix/winix-process--premicrothread.api $ROOT/
src/lib/std/src/winix/winix-io--premicrothread.api $ROOT/
src/lib/std/src/winix/winix-path-g.pkg $ROOT/
src/lib/std/src/proto-basis.pkg $ROOT/
src/lib/std/src/protostring.pkg $ROOT/
src/lib/std/src/substring.api $ROOT/
src/lib/std/src/text.api $ROOT/
src/lib/std/src/exceptions-guts.api $ROOT/
src/lib/std/src/rw-vector.api $ROOT/
src/lib/std/src/rw-vector-slice.api $ROOT/
src/lib/std/src/graph-by-edge-hashtable.api $ROOT/
src/lib/std/src/vector.api $ROOT/
src/lib/std/src/vector-slice.api $ROOT/
src/lib/std/src/int.api $ROOT/
src/lib/std/src/bool.api $ROOT/
src/lib/std/src/char.api $ROOT/
src/lib/std/src/string.api $ROOT/
src/lib/std/src/number-string.api $ROOT/
src/lib/std/src/list.api $ROOT/
src/lib/std/src/paired-lists.api $ROOT/
src/lib/std/src/unt.api $ROOT/
src/lib/std/src/byte.api $ROOT/
src/lib/std/src/date.api $ROOT/
src/lib/std/src/ieee-float.api $ROOT/
src/lib/std/src/float.api $ROOT/
src/lib/std/src/time.api $ROOT/
src/lib/std/src/cpu-timer.api $ROOT/
src/lib/std/src/wallclock-timer.api $ROOT/
src/lib/std/src/null-or.api $ROOT/
src/lib/std/src/math.api $ROOT/
src/lib/std/src/substring.pkg $ROOT/
src/lib/std/src/text.pkg $ROOT/
src/lib/std/src/exceptions-guts.pkg $ROOT/
src/lib/std/src/vector.pkg $ROOT/
src/lib/std/src/vector-slice.pkg $ROOT/
src/lib/std/src/number-string.pkg $ROOT/
src/lib/std/src/string-guts.pkg $ROOT/
src/lib/std/src/char.pkg $ROOT/
src/lib/std/src/list.pkg $ROOT/
src/lib/std/src/number-scan.pkg $ROOT/
src/lib/std/src/number-format.pkg $ROOT/
src/lib/std/src/bool.pkg $ROOT/
src/lib/std/src/catlist.api $ROOT/
src/lib/std/src/catlist.pkg $ROOT/
src/lib/std/src/date.pkg $ROOT/
src/lib/std/src/hostthread.api $ROOT/
src/lib/std/src/hostthread.pkg $ROOT/
src/lib/std/src/typelocked-rw-matrix.api $ROOT/
src/lib/std/src/rw-matrix-of-eight-byte-floats.pkg $ROOT/
src/lib/std/src/rw-matrix-of-one-byte-unts.pkg $ROOT/
src/lib/std/src/typelocked-vector.api $ROOT/
src/lib/std/src/typelocked-vector-slice.api $ROOT/
src/lib/std/src/typelocked-rw-vector.api $ROOT/
src/lib/std/src/typelocked-rw-vector-slice.api $ROOT/
src/lib/std/src/typelocked-matrix.api $ROOT/
src/lib/std/src/vector-of-eight-byte-floats.pkg $ROOT/
src/lib/std/src/vector-slice-of-eight-byte-floats.pkg $ROOT/
src/lib/std/src/rw-vector-of-eight-byte-floats.pkg $ROOT/
src/lib/std/src/rw-vector-slice-of-eight-byte-floats.pkg $ROOT/
src/lib/std/src/rw-vector-of-chars.pkg $ROOT/
src/lib/std/src/rw-vector-slice-of-chars.pkg $ROOT/
src/lib/std/src/vector-of-chars.pkg $ROOT/
src/lib/std/src/vector-slice-of-chars.pkg $ROOT/
src/lib/std/src/rw-vector.pkg $ROOT/
src/lib/std/src/rw-vector-slice.pkg $ROOT/
src/lib/std/src/rw-matrix.api $ROOT/
src/lib/std/src/rw-matrix.pkg $ROOT/
src/lib/std/src/graph-by-edge-hashtable.pkg $ROOT/
src/lib/std/src/ieee-float.pkg $ROOT/
src/lib/std/src/tagged-int-guts.pkg $ROOT/
src/lib/std/src/one-word-int-guts.pkg $ROOT/
src/lib/std/src/two-word-int.pkg $ROOT/
src/lib/std/src/multiword-int.api $ROOT/
src/lib/std/src/multiword-int-guts.pkg $ROOT/
src/lib/std/src/tagged-unt-guts.pkg $ROOT/
src/lib/std/src/one-word-unt-guts.pkg $ROOT/
src/lib/std/src/two-word-unt.pkg $ROOT/
src/lib/std/src/eight-byte-float-guts.pkg #if defined(ARCH_INTEL32)
$ROOT/
src/lib/std/src/math64-intel32.pkg #elif defined(ARCH_PWRPC32)
$ROOT/
src/lib/std/src/math64-none.pkg #else
$ROOT/
src/lib/std/src/math64-sqrt.pkg #endif
$ROOT/
src/lib/std/src/float-format.pkg $ROOT/
src/lib/std/src/one-byte-unt-guts.pkg $ROOT/
src/lib/std/src/vector-of-one-byte-unts.pkg $ROOT/
src/lib/std/src/vector-slice-of-one-byte-unts.pkg $ROOT/
src/lib/std/src/rw-vector-of-one-byte-unts.pkg $ROOT/
src/lib/std/src/rw-vector-slice-of-one-byte-unts.pkg $ROOT/
src/lib/std/src/time-guts.pkg $ROOT/
src/lib/std/src/internal-cpu-timer.pkg $ROOT/
src/lib/std/src/internal-wallclock-timer.pkg $ROOT/
src/lib/std/src/cpu-timer.pkg $ROOT/
src/lib/std/src/wallclock-timer.pkg $ROOT/
src/lib/std/src/paired-lists.pkg $ROOT/
src/lib/std/src/byte.pkg $ROOT/
src/lib/std/src/null-or.pkg $ROOT/
src/lib/std/src/exception-name.pkg $ROOT/
src/lib/std/src/int-guts.pkg $ROOT/
src/lib/std/src/bind-unt-guts.pkg $ROOT/
src/lib/std/src/bind-largeint-32.pkg $ROOT/
src/lib/std/src/bind-fixedint-32.pkg $ROOT/
src/lib/std/src/bind-largeword-32.pkg $ROOT/
src/lib/std/src/bind-sysword-32.pkg $ROOT/
src/lib/std/src/bind-math-32.pkg #if defined(USE_64_BIT_POSITIONS)
$ROOT/
src/lib/std/src/bind-position-64.pkg #else
$ROOT/
src/lib/std/src/bind-position-31.pkg #endif
$ROOT/
src/lib/std/src/bit-flags.api $ROOT/
src/lib/std/src/bit-flags-g.pkg #if defined(OPSYS_UNIX)
$ROOT/
src/lib/std/src/posix/winix-types.pkg $ROOT/
src/lib/std/src/psx/host-int.pkg $ROOT/
src/lib/std/src/psx/posix-error.api $ROOT/
src/lib/std/src/psx/posix-error.pkg $ROOT/
src/lib/std/src/psx/posix-process.api $ROOT/
src/lib/std/src/psx/posix-process.pkg $ROOT/
src/lib/std/src/psx/posix-file.api $ROOT/
src/lib/std/src/psx/posix-io.api #if defined(USE_64_BIT_POSITIONS)
$ROOT/
src/lib/std/src/psx/posix-file-system-64.pkg $ROOT/
src/lib/std/src/psx/posix-io-64.pkg #else
$ROOT/
src/lib/std/src/psx/posix-file.pkg $ROOT/
src/lib/std/src/psx/posix-io.pkg #endif
$ROOT/
src/lib/std/src/psx/posix-id.api $ROOT/
src/lib/std/src/psx/posix-id.pkg $ROOT/
src/lib/std/src/psx/posix-etc.api $ROOT/
src/lib/std/src/psx/posix-etc.pkg $ROOT/
src/lib/std/src/psx/posix-tty.api $ROOT/
src/lib/std/src/psx/posix-tty.pkg $ROOT/
src/lib/std/src/psx/posixlib.api $ROOT/
src/lib/std/src/psx/posixlib.pkg $ROOT/
src/lib/std/src/posix/winix-path.pkg $ROOT/
src/lib/std/src/posix/winix-file.pkg $ROOT/
src/lib/std/src/posix/winix-process--premicrothread.pkg $ROOT/
src/lib/std/src/posix/winix-io--premicrothread.pkg $ROOT/
src/lib/std/src/posix/winix-guts.pkg $ROOT/
src/lib/std/src/posix/winix-data-file-io-driver-for-posix--premicrothread.pkg $ROOT/
src/lib/std/src/posix/winix-text-file-io-driver-for-posix--premicrothread.pkg $ROOT/
src/lib/std/src/posix/winix-data-file-for-posix--premicrothread.pkg $ROOT/
src/lib/std/src/posix/data-file--premicrothread.pkg # Synonym for winix-data-file-for-posix--premicrothread.pkg
$ROOT/
src/lib/std/src/posix/file--premicrothread.pkg $ROOT/
src/lib/std/src/posix/winix-text-file-for-posix--premicrothread.pkg $ROOT/
src/lib/std/src/posix/posix-common.api $ROOT/
src/lib/std/src/posix/posix-common.pkg $ROOT/
src/lib/std/src/posix/spawn--premicrothread.api $ROOT/
src/lib/std/src/posix/spawn--premicrothread.pkg #elif defined(OPSYS_WIN32)
$ROOT/
src/lib/std/src/win32/winix-types.pkg $ROOT/
src/lib/std/src/win32/win32-general.api $ROOT/
src/lib/std/src/win32/win32-general.pkg $ROOT/
src/lib/std/src/win32/win32-file-system.api $ROOT/
src/lib/std/src/win32/win32-file-system.pkg $ROOT/
src/lib/std/src/win32/win32-io.api $ROOT/
src/lib/std/src/win32/win32-io.pkg $ROOT/
src/lib/std/src/win32/win32-process.api $ROOT/
src/lib/std/src/win32/win32-process.pkg $ROOT/
src/lib/std/src/win32/win32.api $ROOT/
src/lib/std/src/win32/win32.pkg $ROOT/
src/lib/std/src/win32/os-path.pkg $ROOT/
src/lib/std/src/win32/os-file-system.pkg $ROOT/
src/lib/std/src/win32/os-process.pkg $ROOT/
src/lib/std/src/win32/winix-guts.pkg $ROOT/
src/lib/std/src/win32/winix-data-file-io-driver-for-win32--premicrothread.pkg $ROOT/
src/lib/std/src/win32/winix-text-file-io-driver-for-win32--premicrothread.pkg $ROOT/
src/lib/std/src/win32/winix-data-file-for-win32.pkg $ROOT/
src/lib/std/src/win32/winix-text-file-for-win32--premicrothread.pkg #else
#error OS not supported for this system
#endif
$ROOT/
src/lib/std/src/pack-unt.api $ROOT/
src/lib/std/src/pack-big-endian-unt16.pkg $ROOT/
src/lib/std/src/pack-little-endian-unt16.pkg $ROOT/
src/lib/std/src/pack-big-endian-unt1.pkg $ROOT/
src/lib/std/src/pack-little-endian-unt1.pkg $ROOT/
src/lib/std/src/pack-float.api $ROOT/
src/lib/std/src/io/winix-file-io-mutex.pkg $ROOT/
src/lib/std/src/io/winix-base-file-io-driver-for-os--premicrothread.api $ROOT/
src/lib/std/src/io/winix-base-file-io-driver-for-posix-g--premicrothread.pkg $ROOT/
src/lib/std/src/io/winix-base-data-file-io-driver-for-posix--premicrothread.pkg $ROOT/
src/lib/std/src/io/winix-base-text-file-io-driver-for-posix--premicrothread.pkg $ROOT/
src/lib/std/src/io/io-exceptions.api $ROOT/
src/lib/std/src/io/io-exceptions.pkg $ROOT/
src/lib/std/src/io/io-startup-and-shutdown--premicrothread.api $ROOT/
src/lib/std/src/io/io-startup-and-shutdown--premicrothread.pkg $ROOT/
src/lib/std/src/io/winix-pure-file-for-os--premicrothread.api $ROOT/
src/lib/std/src/io/winix-pure-text-file-for-os--premicrothread.api $ROOT/
src/lib/std/src/io/winix-file-for-os--premicrothread.api $ROOT/
src/lib/std/src/io/winix-data-file-for-os--premicrothread.api $ROOT/
src/lib/std/src/io/winix-text-file-for-os--premicrothread.api $ROOT/
src/lib/std/src/io/winix-extended-file-io-driver-for-os--premicrothread.api $ROOT/
src/lib/std/src/io/winix-data-file-for-os-g--premicrothread.pkg $ROOT/
src/lib/std/src/io/winix-text-file-for-os-g--premicrothread.pkg $ROOT/
src/lib/std/src/io/say.pkg #if defined(OPSYS_UNIX) or defined(OPSYS_WIN32)
$ROOT/
src/lib/std/src/socket/proto-socket--premicrothread.pkg $ROOT/
src/lib/std/src/socket/net-protocol-db.api $ROOT/
src/lib/std/src/socket/net-protocol-db.pkg $ROOT/
src/lib/std/src/socket/dns-host-lookup.api $ROOT/
src/lib/std/src/socket/dns-host-lookup.pkg $ROOT/
src/lib/std/src/socket/net-service-db.api $ROOT/
src/lib/std/src/socket/net-service-db.pkg $ROOT/
src/lib/std/src/socket/socket--premicrothread.api $ROOT/
src/lib/std/src/socket/socket-guts.pkg $ROOT/
src/lib/std/src/socket/plain-socket--premicrothread.api $ROOT/
src/lib/std/src/socket/internet-socket--premicrothread.api $ROOT/
src/lib/std/src/socket/internet-socket--premicrothread.pkg #endif
#if defined(OPSYS_UNIX)
$ROOT/
src/lib/std/src/socket/net-db.api $ROOT/
src/lib/std/src/socket/net-db.pkg $ROOT/
src/lib/std/src/socket/unix-domain-socket--premicrothread.api $ROOT/
src/lib/std/src/socket/plain-socket--premicrothread.pkg $ROOT/
src/lib/std/src/socket/unix-domain-socket--premicrothread.pkg #elif defined(OPSYS_WIN32)
$ROOT/
src/lib/std/src/socket/win32-plain-socket.pkg #endif
$ROOT/
src/lib/std/src/int-chartype.api $ROOT/
src/lib/std/src/int-chartype.pkg $ROOT/
src/lib/std/src/string-chartype.api $ROOT/
src/lib/std/src/string-chartype.pkg $ROOT/
src/lib/std/src/log.pkg $ROOT/
src/lib/src/list-sort.api $ROOT/
src/lib/src/list-mergesort.pkg# Copyright (c) 2004 by The Fellowship of SML/NJ
# Subsequent changes by Jeff Prothero Copyright (c) 2010-2015,
# released per terms of SMLNJ-COPYRIGHT.