On 16-02-2023 09:03, Dr. Arne Babenhauserheide wrote:

Maxime Devos <maximede...@telenet.be> writes:
+         ;; allow using "# foo" as #(foo).
+         (read-hash-extend #\# (λ (chr port) #\#))

That's a rather Wisp-specific extension, but it appears you are
extending things globally.  Instead, I propose extending it
temporarily, with the undocumented '%read-hash-procedures' fluid.

I tried the spec-example, but it didn’t work for me.

Assuming that with 'spec-example', you meant

  (parameterize ((%read-hash-procedures/parameter
                   `((#\# ,(λ (chr port) #\#))
                     ,@(%read-hash-procedures/parameter))))
    [...]):

I forgot to place a '.' between #\# and ,(λ ...).

Do you mean using it similar to this test?

   (pass-if "R6RS/SRFI-30 block comment syntax overridden"
     ;; To be compatible with 1.8 and earlier, we should be able to override
     ;; this syntax.
     (with-fluids ((%read-hash-procedures (fluid-ref %read-hash-procedures)))
       (read-hash-extend #\| (lambda args 'not))
       (fold (lambda (x y result)
               (and result (eq? x y)))
             #t
             (read-string "(this is #| a comment)")
             `(this is not a comment))))

That appears to me a valid (and slightly simpler and more robust) way of doing things, yes.

Greetings,
Maxime.

Attachment: OpenPGP_0x49E3EE22191725EE.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

Reply via email to