Marlais is based on the description of Dylan in [1], in the Dylan
Design Notes [2], and the Dylan Interim Reference Manual [3].
It does not, however, implement the entire language yet.

The following Design Note modifications are currently incorporated:

* DN 1	Collection Class-For-Copy

* DN 2	First, Second, Third, Last Default
	For those classes on which these are implemented, they take
	the default keyword argument.

* DN 3	Make Class Specification
	(make <class> ...) takes keyword arguments super-classes:,
	slots:, and debug-name:

* DN 4	No Incremental Class Modifications

* DN 5	Regularization of the Type System

* DN 6	Limited Types
	Limited integer types supported.
	No support for limited collection types.

* DN 7	Union Types
	
* DN 8	Method Dispatch Ambiguity

* DN 9	Punt Slot Descriptors

* DN 10 Element-Setter Signals Error
	(with the exception of element-setter on unbounded sequences)

* DN 11 Last-Setter
	Implemented as described, but likely fails on unbounded sequences.
?	The "portable implementation" has this problem too, since size
?	is not guaranteed to terminate on unbounded sequences.

* DN 13 Type Restrictions Survive Assignment

* DN 16 List Issues
	head, tail, pair, concatenate are implemented.
	car, cdr, cons issue warning messages.

* DN 17	Define Like Bind
	(define (x <integer>) y z (values 1 2 3)) and so forth

* DN 20 New Syntax for Setter Variables
	Setter variables are of the form xxx-setter rather than (setter xxx)

* DN 21 Result Type Declarations
	Since conditions aren't quite in the implementation, <type-error>
	doesn't get raised when value return types don't match, but
	an error is reported.

* DN 30	Make Range

* DN 31	Method Specificity

* DN 34	Select Ordering

There are some features of Dylan that are not included in Marlais.
Here is a partial list.

* Builtin classes - Builtin classes are represented differently from
classes defined with DEFINE-CLASS and (make <class> ...)

* Incomplete class hierarchy - <integer> and <double-float> are the
only two <number> classes supported.  The collection classes <list>,
<simple-object-vector>, <range>, <byte-string>, <array>, and <table>
are supported.  There is no support for <stretchy-vector>.

* Error handling - There is very little support for error handling and
conditions.   Basically there is just an (error ...) function.

* Numeric operations - Only the numeric operations that I needed were
included.  See the file HACKING for information on adding these
functions yourself.

* Weak links - Not supported. (See note on pg. 93 of Dylan Book.)

* Misc - If there is a feature missing that you need, let us know.  It
will have a better chance of making it into the next release.

There are several additional features that have been added.

* Simple stream I/O - There were only passing allusions to I/O in the
Dylan book.  Marlais has added the following I/O features:

	<stream> builtin class
	(open-input-file <string>) => <stream>
	(open-output-file <string>) => <stream>
	(close-stream <stream>) => unspecified
	(eof-object? <object>) => <boolean>
	(print <object>) => unspecified
	(princ <object>) => unspecified
	(format (union <stream> #t) <string> arg1 arg2 ...) => unspecified
	(read [<stream>]) => <object>
	(read-char [<stream>]) => <character>
	(load <string>) => unspecified	

* Other handy features

	(ctime) => <string>
		returns day-date-time string
	(time) => <integer>
		returns low order bits of number of seconds since
		some system-defined referent.
	(clock) => <integer>
		returns number of milliseconds used by process.

* Leaving Marlais - The functions QUIT and BYE are provided for
leaving Marlais.

---
[1] Andrew Shalit.  "Dylan: an object oriented dynamic language".
Apple Computer, Inc.  1992.

[2] Various Authors.  "Dylan Design Notes".  Apple Computer, Inc.  1993-1994.

[3] Andrew Shalit, Orca Starbuck, et. al. "Dylan (TM) Interim Reference Manual.
Apple Computer, Inc.  1992-1994
