Hello, ecl does not specialize the print-object method on hash-tables:
> (find-method #'print-object '() '(hash-table t)) > Debugger received error of type: SIMPLE-ERROR > There is no method on the generic function PRINT-OBJECT that agrees on > qualifiers NIL and specializers (HASH-TABLE T) After reading the hyperspec carefully, I think this is ok, it only requires it on standard-object and structure-object. However, i still thought that specializing on hash-table would work, but it doesn't: >> (defmethod print-object ((obj hash-table) stream) (princ "its working" > stream)) > #<standard-method PRINT-OBJECT (#<The BUILT-IN-CLASS HASH-TABLE> #<The > BUILT-IN-CLASS T>)> > >> (make-hash-table) > #<hash-table 000000000493ee40> Shouldn't we still dispatch the call to this method? And if not, what's the best way in ecl to customize the printable representation of a hash-table? I've tried: > > (set-pprint-dispatch 'hash-table (lambda (s obj) (princ "its working" > s))) > NIL > > (make-hash-table) > its working But this sometimes gives an error: > Debugger received error of type: SIMPLE-ERROR > Tried to modified a read-only pprint dispatch table: > #<pprint-dispatch-table 0000000003375210> > Error flushed. Thanks!