DOMAIN LISP Release Notes
Software Release 2.0
Part No. 004832
Revision 01
This document describes the new features of DOMAIN LISP Version 2.0
and all existing bugs and bugs fixed since DOMAIN LISP Version 1.0.
APOLLO COMPUTER INC.
330 Billerica Road
Chelmsford, Massachusetts 01824
c 1985 Apollo Computer Inc.
All rights reserved.
Printed in U.S.A.
Print date: December, 1985
This document was formatted using the FMT tool distributed with the DOMAIN
computer system.
APOLLO and DOMAIN are registered trademarks of Apollo Computer Inc.
AEGIS, DOMAIN/IX, DOMAIN/Dialogue, D3M, DPSS, DGR, GMR, GPR, and DSEE are
trademarks of Apollo Computer Inc.
Apollo Computer Inc. reserves the right to make changes in specifications and
other information contained in this publication without prior notice, and the
reader should, in all cases, consult Apollo Computer Inc. to determine
whether any such changes have been made.
THE TERMS AND CONDITIONS GOVERNING THE SALE OF APOLLO COMPUTER INC. HARDWARE
PRODUCTS AND THE LICENSING OF APOLLO COMPUTER INC. SOFTWARE CONSIST SOLELY OF
THOSE SET FORTH IN THE WRITTEN CONTRACTS BETWEEN APOLLO COMPUTER INC. AND ITS
CUSTOMERS. NO REPRESENTATION OR OTHER AFFIRMATION OF FACT CONTAINED IN THIS
PUBLICATION, INCLUDING BUT NOT LIMITED TO STATEMENTS REGARDING CAPACITY,
RESPONSE-TIME PERFORMANCE, SUITABILITY FOR USE OR PERFORMANCE OF PRODUCTS
DESCRIBED HEREIN SHALL BE DEEMED TO BE A WARRANTY BY APOLLO COMPUTER INC. FOR
ANY PURPOSE, OR GIVE RISE TO ANY LIABILITY BY APOLLO COMPUTER INC.
WHATSOEVER.
IN NO EVENT SHALL APOLLO COMPUTER INC. BE LIABLE FOR ANY INCIDENTAL,
INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING BUT NOT
LIMITED TO LOST PROFITS) ARISING OUT OF OR RELATING TO THIS PUBLICATION OR
THE INFORMATION CONTAINED IN IT, EVEN IF APOLLO COMPUTER INC. HAS BEEN
ADVISED, KNEW OR SHOULD HAVE KNOWN OF THE POSSIBILITY OF SUCH DAMAGES.
THE SOFTWARE PROGRAMS DESCRIBED IN THIS DOCUMENT ARE CONFIDENTIAL INFORMATION
AND PROPRIETARY PRODUCTS OF APOLLO COMPUTER INC. OR ITS LICENSORS.
Reader_Notice
This document resides on line in the /doc directory. To print a copy of this
document, use the PRF command with the -npag and -pr options.
PRF <file_pathname> -PR <printer_name> -NPAG
The hard-copy version of Chapter 4 that is shipped with the release media
may differ from the on line version of Chapter 4, because they have different
production schedules. Typically, the hard-copy version is more up to date.
iii
Contents
Section Page
CHAPTER 1 OVERVIEW OF DOMAIN LISP 2.0 . . . . . . . . . . . . . . . . 1-1
CHAPTER 2 INSTALLATION PROCEDURES . . . . . . . . . . . . . . . . . . 1-1
CHAPTER 3 CHANGES IN DOCUMENTATION . . . . . . . . . . . . . . . . . 1-1
CHAPTER 4 BUGS AND BUG FIXES . . . . . . . . . . . . . . . . . . . . 1-1
Contents iv
CHAPTER 1
OVERVIEW OF DOMAIN LISP 2.0
You can add this software to a node or DOMAIN System Server that is running
the SR9 or a later version of the DOMAIN operating system.
This chapter describes the new features of DOMAIN LISP 2.0.
Incompatible_Change_to_Invocation
Invoke DOMAIN LISP with the DOMAIN_LISP command:
$ domain_lisp
Change_to_Main_LISP_Directory
The LISP files are now in /SYS/DOMAIN_LISP; they are no longer in
/SYS/LISP. For compatibility, /SYS/LISP is now a link that points to
/SYS/DOMAIN_LISP. You can delete this link if your code does not contain
any embedded references to /SYS/LISP.
Installation
The LISP installation is simpler. The global library /LIB/LISP_INITLIB has
been removed so you do not need to shut down your node to install a new
version of LISP.
External_Routines_and_System_Services
DOMAIN LISP provides a new way to call external routines and system services
from LISP, and to call LISP from other languages. Chapter 14 of the DOMAIN
LISP_Language_Reference describes this interface.
Compiler
The LISP compiler is faster. CPU speed has been doubled and the working set
has been reduced by a factor of about 10.
1-1 DOMAIN LISP Release 2.0
Constant_Heap
The constant heap is the area in which LISP stores constants. The constant
heap is not garbage collected. LISP displays data regarding the constant
heap after garbage collection occurs.
Benchmarks
The de facto standard "Gabriel" benchmarks are packaged with DOMAIN LISP
along with all sources (see Richard P. Gabriel, "Performance and Evaluation
of Lisp Systems", MIT Press, 1985). The purpose of this is to encourage
standardized performance measurement on all equipment using "certified"
benchmark code.
The benchmarks are located in /SYS/DOMAIN_LISP/BENCH. Documentation is in
/SYS/DOMAIN_LISP/BENCH/DOC. Run the benchmarks with these commands:
$ wd /sys/lisp/bench
$ bench
The_/SYS/LISP/UTIL_Area
The heap_utils and invoke_utils have been placed in lisplib, and so are
automatically included when you invoke LISP.
The utils area is currently empty.
Specifying_Main_Programs
Main programs are those that you can invoke from the Shell or with
pgm_$invoke. Specify a main program with the main-function option before you
compile the routine.
To specify a main function, include this expression as the first line of the
function that begins your program:
(:options main-function)
For example, the source file myprog.lsp contains a function named start_off,
which is the beginning of the program. Therefore, we define start_off in
this way:
(de start_off ()
(:options main-function)
.
.
.
)
Then compile myprog.lsp to produce the object file myprog.bin.
Main_Program_Heap_Size
DOMAIN LISP Release 2.0 1-2
Use the main-function-initial-heapsize option to specify a particular heap
size to be used when a main program is invoked.
To specify a main function heapsize, include main-function-initial-heapsize
and a heap size in bytes with the options expression that indicates a main
function:
(:options main-function main-function-initial-heapsize 00000000)
where 00000000 is the size of the heap in bytes.
Inlib
You do not need to inlib Lisplib to run a main program. However, performance
improves slightly if you do inlib lisplib before invoking the main program.
Function_Redefinition
You can now redefine any function, including bound functions and built-in
functions. Being able to redefine functions makes the development of large
LISP systems much easier. You can enhance and debug a body of bound routines
by simply loading the routines and then loading the new pieces. A full bind
is not needed until you want a production version.
Use Load or Reload when you load routines that contain redefinitions.
(Fast-load does not redefine functions in bound routines.)
When the *UserMode switch is on (T), LISP issues a query for whether you want
to redefine the built-in function in question. The *UserMode switch is on
by default.
NOTE: It is strongly recommended that you do not redefine built-in LISP
functions.
Tracing
You can now trace compiled functions.
Break_Loop_Traceback
Break loops provide four traceback commands: T, I, F and V. These commands
can also be used with compiled routines.
Representing_Signed_32-bit_numbers
A new number notation lets you denote 32-bit unsigned numbers. Ordinarily,
you specify numbers in signed notation, such as 15, -37, 16#1A.
To represent a 32-bit unsigned number (right-justified), use this format:
base$numeral
1-3 DOMAIN LISP Release 2.0
where base indicates the radix being used, and numeral is the number in
two's-complement notation. For example, 16$ffffffff is -1.
These numbers are equivalent:
16$a0000000
-16#60000000
-1610612736
Changes_to_Existing_Functions_and_Globals
o *Time. When the *Time switch is on, LISP displays the CPU time in
seconds, real time in seconds, and the number of page faults
incurred in processing an expression.
o %C. The %C formatting directive prints an integer with commas. Use
%C with PrintF, BldMsg, and ErrorPrintF.
o NEXT Keyword. You can use the NEXT keyword with Do, Do*, Do-Loop,
Do-Loop*, For, and IFor.
o *Break-on-Fault. The *Break-on-Fault switch is on (T) by default.
o PPF. Using PPF with a compiled function tells you the functions's
type, number of arguments it expects, its code-pointer, and its
source file.
New_Functions_and_Globals
o Unique-GenSym, Unique-InternGenSym, and Unique-StringGenSym.
Unique-GenSym and Unique-InternGenSym generate symbols based on
unique strings, and Unique-StringGenSym generates strings based on
unique strings.
o *Suppress-Prompt-During-Read. When the *Suppress-Prompt-During-Read
switch is on (T), LISP suppresses the LISP prompt until you type an
entire expression. This simplifies copying from the transcript pad.
When the *Suppress-Prompt-During-Read is off (NIL), LISP displays the
prompt.
*Suppress-Prompt-During-Read is normally off.
o LSetQ. LSetQ binds identifiers to consecutive elements of a list,
which is useful for binding identifiers to functions that return
"multiple values."
o Function-Source-Filename. Each object module now contains the name
of the source file from which it was compiled.
DOMAIN LISP Release 2.0 1-4
Function-Source-Filename returns the source file name of a
particular compiled function.
o *Macro-Displace and DefMacro-Displace. DOMAIN LISP now provides
displacing macros and the ability to define displacing macros. When
the *Macro-Displace flag is on, LISP substitutes the definition of
macros defined with DefMacro-Displace for the call to the macro.
Faster interpretation of functions results from this substitution.
o Channel2Stream and Open-Stream. LISP lets you use streams directly
and call procedures that return stream-id's. Channel2Stream and
Open-Stream, let you map streams to channels and map channels to
streams.
o LoadedP. LoadedP checks whether a file is an object file that has
already been loaded.
o *Backtrace. If the *Backtrace switch is on (T), LISP calls the
Backtrace function whenever an error occurs. If *Backtrace is off
(NIL), LISP does not display backtrace information.
*Backtrace is normally off.
o Backtrace, InterpBacktrace, FullBacktrace, and VerboseBacktrace.
These functions display backtrace information in varying degrees of
detail.
Backtrace displays the interpreted and compiled functions that LISP
has called before Backtrace was called, excluding system overhead
functions such as Apply and Eval.
InterpBacktrace displays the functions that LISP has called before
InterpBacktrace was called, including system overhead functions such
as Apply and Eval.
FullBacktrace displays the functions that LISP has called before
FullBacktrace was called, including internal functions.
VerboseBacktrace displays the current stack.
o #' is equivalent to Function. Use this to quote the name of a
function in interpreted or compiled routines.
o A number of predicates and arithmetic functions have been added that
are shorter equivalents of existing functions:
New Existing New Existing
+ Plus I+ IPlus
* Times I* ITimes
- Difference I- IDifference
/ Quotient I/ IQuotient
1+ Add1 I1+ IAdd1
1-5 DOMAIN LISP Release 2.0
1- Sub1 I1- ISub1
< LessP I< ILessP
= EqN I= Eq
> GreaterP I> IGreaterP
<= LEq I<= ILEq
>= GEq I>= IGEq
<> NEq I<> Ne
o The following functions and global, which were not included in the
previous DOMAIN LISP manual, are now documented in the DOMAIN__LISP
Reference:
Lambda
Char
MapObl
Reclaim
*Gc
DOMAIN LISP Release 2.0 1-6
CHAPTER 2
INSTALLATION PROCEDURES
There are two separate installation procedures described in this chapter.
o A user installing optional software on his or her own node can skip
to the Installation Procedures for Users, (Section 2.2).
o A system administrator must perform the Installation Procedures for
System Administrators (Section 2.1) before the user can perform the
Installation Procedures for Users.
The terms and conventions used in these procedures are as follows:
o "Work node" is the node with a keyboard and display that you are
using to enter the commands to do the software installation.
o "Target volume" is the Winchester disk or mass storage disk on which
you are installing new software. "Target node" is the node or DOMAIN
Server Processor (DSP) that contains the target volume. The work node
and the target node can be the same.
NOTE: When you are installing software to update a diskless node,
the target volume is the partner node's disk.
o "Source media" is the media that you get the software from. In the
Installation Procedures for System Administrators, the source media
can be floppy disks, magnetic tape, or cartridge tape. In the
Installation Procedures for Users, the source media is the network.
o "Source volume" is the Winchester disk or mass storage disk that has
already been updated with the new software.
o Angle brackets ( < > ) enclose the name of a key on the keyboard.
o These installation procedures assumes that you do not have any links
from system directories, except for links to /sys/help and /systest.
System directories include: /sys, /com, /systest, /bscom, /lib,
/sau1-5, and /sysboot.
2-1 DOMAIN LISP Release 2.0
2.1 INSTALLATION PROCEDURES FOR SYSTEM ADMINISTRATORS
This section explains how to install the software from the source media and
set up a source area for user installations. After you have set up the
source area, users can perform network installs without logging in as a
system administrator. This type of source area is part of a protected
subsystem. (Step 5 (INIT_SOURCE) is the one that tailors the protected
subsystem for your network.)
After you have set up this protected subsystem, you should provide the user
with the pathname of the source area. Refer the user to Installation
Procedures for Users (Section 2.2) for instructions.
You can only install this software on a node or DOMAIN Server Processor that
is running SR9.0 or a later version of the DOMAIN operating system. If a
node is not running SR9 or a later version, install SR9 following the
software update procedures. These procedures are described in the Standard
Software__Release__Document_--_Software_Release_9.0 (Order No. 005809 Revision
03).
To install the software:
1) Log in to a work node as a system administator: i.e.,
person.sysadmin
2) Decide where you want to establish the source area for user
installations. The target volume for this installation will become
the source volume in the Installation Procedures for Users. Your
target volume can be at the node level (like //thunder) or it can be
in a subdirectory (like //wind/moon/stars). Set your working
directory to the target volume.
$ wd //target_volume <RETURN>
3) Insert the media into the drive and enter one of the RBAK commands
shown below, then press <RETURN>. If you are using a tape cartridge,
use the CT option shown in the example. If you are using a magnetic
tape, use the M0 (Mzero) option. If you are using a floppy, use the
F0 (Fzero) option.
$ RBAK -DEV CT -F 1 INSTALL -AS INSTALL -L -MS -FORCE -SACL
$ RBAK -DEV M0 -F 1 INSTALL -AS INSTALL -L -MS -FORCE -SACL
$ RBAK -DEV F0 -F 1 INSTALL -AS INSTALL -L -MS -FORCE -SACL
4) Set your working directory to //target_volume/INSTALL:
$ WD //target_volume/INSTALL <RETURN>
DOMAIN LISP Release 2.0 2-2
5) Type INIT_SOURCE to establish the source area from which users can
install their own software. The procedure prompts you for the
pathname of the source area you are establishing. Enter the same
pathname that you entered in Step 2.
$ INIT_SOURCE <RETURN>
Please enter the name of the SR9 SOURCE AREA/NODE
for your network (e.g., '//NODE/SR9_SOURCE_AREA'):
The SR9 source area/node for your network
has been set to:
This will fail if you are not logged in as person.sysadmin
6) Execute the INSTALL Shell script by typing:
$ INSTALL <RETURN>
7) The program prompts you to enter an installation type. Please enter
OPT and press <RETURN>.
Software Installation Types are:
STD -- Install SR9 standard software
RESTART -- Restart the software installation
OPT -- Install optional software (i.e., Pascal Sr9.0.020, GPIO)
ACL -- Set ACLs for existing software
CLEANUP -- Run the Cleanup Procedure for ADD MODE installations
DOMAIN_IX -- Install the DOMAIN/IX software
Please Enter Installation Type:
8) The procedure then asks if you have adequate rights to modify system
directories. You must answer yes to this question.
You must have sufficient rights to modify system directories
on the target node for the installation procedure to
work properly.
You are logged in as:
person.sysadmin.organization.node_number node_name
Do you have adequate rights ?
Please enter response. (yes or no):
2-3 DOMAIN LISP Release 2.0
9) You are then prompted for the name of the target volume. Enter the
pathname that you entered in step 5 when the INIT_SOURCE command
prompted you for the SR9 SOURCE AREA/NODE for your network and press
<RETURN>.
** SR9 Optional Software Installation **
Please enter the name of the TARGET volume that the SR9 Optional
Software will be installed on. (e.g. '//UPDATE_ME'):
Enter TARGET Volume:
10) The procedure prompts you for the name of the optional product. Enter
a single name (LISP) and press <RETURN>.
Name Description Disk Blocks Needed
(Adding New Software)
CC C Compiler SR9.0.020 1400
CORE Core library SR9.0.020 500
D3M DOMAIN Distributed Database Management 4300
DIALOGUE DOMAIN/DIALOGUE 1000
DPCI1 DOMAIN/PCI -1 1000
DPCI8 DOMAIN/PCI -8 1100
DSEE DOMAIN Software Engineering Environment 1800*
FTN FORTRAN Compiler SR9.0.020 700
GPIO GPIO Software 950
LISP DOMAIN/Lisp 2300
PAS Pascal Compiler SR9.0.020 1100
RJE DOMAIN System RJE Emulation Package 300
TCP TCP/IP 900
* Represents DSEE software only.
The DSEE Tutorial is an additional 2500 blocks.
Enter the name of a single optional software product you
would like to install.
Please enter an optional software product name:
DOMAIN LISP Release 2.0 2-4
11) The procedure prompts you for the name of the source media. Enter it
and press <RETURN>.
Source MEDIA is one of:
CTAPE -- SR9 Optional Release Cartridge Tape
FLOPPY -- SR9 Optional Release Floppy Disk
MTAPE -- SR9 Optional Release Magnetic Tape
NET -- A volume on the network with SR9 Optional software
QUIT -- Exit from the installation
Enter Source Media:
12) The procedure installs the software. When it is finished, check the
transcript pad to verify that all the files were copied.
INSTALLING OPTIONAL SOFTWARE on target_volume
. .
. .
13) The procedure prompts you for the next step. Enter the proper option
and press <RETURN>.
Options:
RERUN -- There were errors in the transcript
pad and you wish to rerun the installation.
FINISH -- The installation ran to completion error free.
There is no additional optional software you
wish to install.
CONTINUE -- Install additional optional software.
Enter an option:
14) If you selected FINISH and if there were no errors during the
installation, you are finished with the creation of the source
area. If you want to use the software in the source area, you must
shutdown and restart the target node.
2.2 INSTALLATION PROCEDURES FOR USERS
Use these procedures if you are a user installing optional software on your
own node. Ask your system administrator for the name of the source volume for
the software. If your node has a disk, then your own node is the target node;
if your node is diskless, then your partner node is the target node.
2-5 DOMAIN LISP Release 2.0
1) Log in to a work node as yourself. Start a Shell on the work node.
(This can be the target node.)
2) Set your working directory to //source_volume/INSTALL.
$ WD //source_volume/INSTALL <RETURN>
3) Execute the INSTALL Shell script by typing:
$ INSTALL <RETURN>
4) The program prompts you to enter an installation type. Enter OPT and
press <RETURN>.
Software Installation Types are:
STD -- Install SR9 standard software
RESTART -- Restart the software installation
OPT -- Install optional software (i.e., Pascal Sr9.0.020, GPIO)
ACL -- Set ACLs for existing software
CLEANUP -- Run the Cleanup Procedure for ADD MODE installations
DOMAIN_IX -- Install the DOMAIN/IX software
Please Enter Installation Type:
5) The procedure then asks if you have rights to modify system
directories. Most users should answer NO. When you answer NO, the
procedure automatically grants you the rights needed to install new
software into these system directories.
Only answer YES if you have deliberately changed the ACLs on your
system directories (/SYS, /COM, /SYSTEST, /BSCOM, /LIB, SAU1-5, or
/SYSBOOT) and removed a system administrator's priviliges.
The same software is installed, whether you answer YES or NO.
You must have sufficient rights to modify system directories
on the target node for the installation procedure to
work properly.
You are logged in as:
person.project.organization.node_number node_name
Do you have adequate rights ?
Please enter response. (yes or no):
DOMAIN LISP Release 2.0 2-6
6) You are then prompted for the name of the target volume. Enter it
and press <RETURN>.
** SR9 Optional Software Installation **
Please enter the name of the TARGET volume that the SR9 Optional
Software will be installed on. (e.g. '//UPDATE_ME'):
Enter TARGET Volume:
7) The procedure prompts you for the name of a single optional product.
Enter it and press <RETURN>.
Name Description Disk Blocks Needed
(Adding New Software)
CC C Compiler SR9.0.020 1400
CORE Core library SR9.0.020 500
D3M DOMAIN Distributed Database Management 4300
DIALOGUE DOMAIN/DIALOGUE 1000
DPCI1 DOMAIN/PCI -1 1000
DPCI8 DOMAIN/PCI -8 1100
DSEE DOMAIN Software Engineering Environment 1800*
FTN FORTRAN Compiler SR9.0.020 700
GPIO GPIO Software 950
LISP DOMAIN/Lisp 2300
PAS Pascal Compiler SR9.0.020 1100
RJE DOMAIN System RJE Emulation Package 300
TCP TCP/IP 900
* Represents DSEE software only.
The DSEE Tutorial is an additional 2500 blocks.
Enter the name of a single optional software product you
would like to install.
Please enter an optional software product name:
2-7 DOMAIN LISP Release 2.0
8) The procedure prompts you for the name of the source media. Enter it
and press <RETURN>.
Source MEDIA is one of:
CTAPE -- SR9 Optional Release Cartridge Tape
FLOPPY -- SR9 Optional Release Floppy Disk
MTAPE -- SR9 Optional Release Magnetic Tape
NET -- A volume on the network with SR9 Optional software
QUIT -- Exit from the installation
Enter Source Media:
9) Skip this step if you answered NO in step 5. If you answered YES in
step 5 and if you answered NET in step 6, then the procedure prompts
you for the name of the source volume. Enter the source volume and
press <RETURN>.
Enter the name of the entry directory from which to copy the
SR9 Optional Software (e.g., '//GTI'):
Enter Source Volume or type 'quit':
10) The procedure installs the software. When it is finished, check the
transcript pad to verify that all the files were copied.
INSTALLING SR9 OPTIONAL SOFTWARE on target_volume
. .
. .
11) Enter the proper option and press <RETURN>.
Options:
RERUN -- There were errors in the transcript
pad and you wish to rerun the installation.
FINISH -- The installation ran to completion error free.
There is no additional optional software you
wish to install.
CONTINUE -- Install additional optional software.
Enter Option:
DOMAIN LISP Release 2.0 2-8
12) If you selected FINISH and if there were no errors during the
installation, the procedure instructs you to shut down the target
node and reboot it. Use the Display Manager SHUT command to shut
down the target node. (If your node is diskless, then the target node
is your partner node.)
<cmd> shut
13) After the SUCCESSFUL SHUTDOWN message and the ">" prompt appears,
reboot the node by typing the following at the prompt: RE <RETURN>
<RETURN> EX AEGIS <RETURN>.
> RE <RETURN>
> <RETURN>
MD REV xx/xx/xx
> EX AEGIS <RETURN>
You are finished with the installation.
2-9 DOMAIN LISP Release 2.0
CHAPTER 3
CHANGES IN DOCUMENTATION
The DOMAIN_LISP_Language_Reference (Revision 03) describes all features of
DOMAIN LISP 2.0, so this section contains no new information.
3-1 DOMAIN LISP Release 2.0
Chapter 4
BUGS AND BUG FIXES
4.1 BUG FIXES SINCE DOMAIN LISP 1.0
DOMAIN LISP 2.0 fixes the following bugs:
o Previously, you could not use certain data objects as constants in
compiled routines. These data objects included large integers, byte
vectors, halfword vectors, and word vectors. DOMAIN LISP now
supports all data objects.
o Calls to the Load function are now compiled and are run with the
initialization code.
o The prettyprinter now properly displays lists whose last Cdr is not
NIL.
o LISP now compiles anonymous lambda expressions in compiled routines
when you quote the expressions with Function or #'.
o You can now load main functions and call them as ordinary functions.
o LISP no longer prints a message if a fault that is handled by a
user-defined fault handler occurs.
o You can now use DskIn inside of CompileTime to load a file into the
compilation environment without compiling the file.
4-1 DOMAIN LISP Release 2.0
4.2 KNOWN LIMITATIONS IN DOMAIN LISP 2.0
The following is a list of known limitations in DOMAIN LISP 2.0:
o You cannot use RemD to remove the definition of a built-in
function. In addition, if you redefine built-in functions, you may
not be able to reinvoke LISP in that incarnation of the Shell.
o Certain functions, such as GMergeSort, take functions as arguments.
With these functions you must supply an Expr, such as LessP, for the
function argument; you cannot supply a macro, such as <.
o With the Pascal/LISP interface, if a name becomes too long (for
example, when type and field names are conjoined), LISP does not
issue an error until the compilation phase.
o With the Pascal/LISP interface, the uniqueness of floating-point out
(output) arguments is not guaranteed.
4.3 BUGS IN DOMAIN LISP 2.0
None.
DOMAIN LISP Release 2.0 4-2