object->string or display instead of implementing our own printer.
Handle format:read-proof here. Unreadable objects are recognized
by their "#<" prefix instead of by being unknown to the custom
printer (which would treat keywords as unprintable, for example).
(format:iobj->str): Removed.
delete delete! assoc): Marked as replacements.
* goops.scm (define-extended-generics): New syntax.
(<class> <operator-class> <entity-class> <entity>): Marked as
replacements.
* boot-9.scm (module-override!, make-mutable-parameter,
lookup-duplicates-handlers, default-module-duplicates-handler):
New functions.
(process-duplicates): Don't call duplicates handlers for duplicate
bindings of the same variable.
(process-define-module): Process #:replace.
(compile-interface-spec, resolve-interface): Process #:prefix.
* format.scm (format): Marked as replacement.
* threads.scm (future, future-ref): Marked as replacements.
print improper lists with (x y . z) syntax rather than as
individual pairs. (This code should probably be integrated into C
level facilities. It is currently terribly slow.)
re-define format to be format:format (instead of just define,
which interacts poorly with the module system). Thanks to Shuji
Narazaki for this change.
changes:
(format:format): If the first argument is the format string, stick
a #f on the front of it, so it is now a valid CL format argument
list. This is easier than changing everyplace else (like the
error formatter) that expects it to be in CL form. The other
clause which explicitly tests for this case is now dead code.
(format:format-work): Allow `@' and `:' in either order, as per
modern CL behavior.
(format:num->cardinal): Don't assume that an elseless if returns
'() when the condition is false.