From: Juan Jose Garcia Ripoll <lisp@ar...> - 2005-01-10 09:56:33
Below are the latest changes committed to CVS. Notice that at least the
changes made to LOOP might break current programs that are written in a
wrong style. Namely, it is wrong to write
(LOOP FOR I FROM 1 WHILE (< I 10) FOR J FROM 1 TO 2 ...)
The correct form is
(LOOP FOR I FROM 1 FOR J FROM 1 TO 2 WHILE (< I 10) ...)
because WHILE, WHEN, IF, etc, belong to the body of the LOOP macro.
- The parser for #* did not accept #0* and also did not signal errors when
invalid characters were found.
- The parser for #( did not accept empty vectors.
- The parser for #C did not accept whitespaces between #\C and the list.
- The reader macros for sharp-single-quote (#') and single-quote (')
did not pay attention to the end of file condition.
- The stream mode smm_closed disappears. Instead we add a flag called
stream.closed. Besides this fulfills the fact that CLOSE cannot change
the class of the stream
- ENSURE-GENERIC-FUNCTION, DEFGENERIC and DEFMETHOD now can operate
on functions which are being traced.
- It is now possible to change the class of a generic function using
DEFGENERIC or ENSURE-GENERIC-FUNCTION(-USING-CLASS).
- Implemented METHOD-COMBINATION-ERROR and INVALID-METHOD-ERROR.
- ECL now uses the character trait "invalid" (ANSI 184.108.40.206).
- (LOOP FOR NIL FROM ...) is a valid statement and the presence of NIL
only denotes that we ignore the value.
- In LOOP, the order of statements in the body is now preserved. Formerly
WHILE and RETURN clauses were not thought to be part of the loop body.
Furthermore, FOR-AS clauses cannot appear after a main clause, such as
WHILE, WHEN, IF, DO, COLLECT, etc...
- Option sorting of methods now takes into account the generic function
- The default value of optional arguments in a DEFTYPE form "defaults"