Previously, #@n sometimes read as the nth hashed object, and
sometimes read as a quotation of it. The advantage of the old
behaviour is that non-scode objects could be mentioned inside
quotations with #@n. Personally, most of the time I referred to
non-scode objects inside quotations with #@n was as '#@n to work
around the problems this fixes:
(lambda (x) x)
;Value 12: #[compound-procedure 12]
(#@12 0)
;The object #[compound-procedure 12], passed as an argument to make-combination, is not an operator expression.
(list 1 2 3)
;Value 18: (1 2 3)
(pp #@18)
;The object 1 is not applicable.
@end example
@noindent
-is notation for the object.
+is notation for an expression evaluating to the object.
If @var{procedure} is supplied, the returned method generates a slightly
different external representation:
;; result of the evaluation to be the object she was referring
;; to. If the quotation isn't there, the user just gets
;; confused.
- (if (scode-constant? object)
- object
- (make-quotation object))))
+ (make-quotation object)))
(define (parse-unhash object)
(if (not (exact-nonnegative-integer? object))