+ (pass-if "R6RS/SRFI-30 block comment"
+ (equal? '(+ 1 2 3)
+ (read-string "(+ 1 #| this is a\ncomment |# 2 3)")))
+
+ (pass-if "R6RS/SRFI-30 nested block comment"
+ (equal? '(a b c)
+ (read-string "(a b c #| d #| e |# f |#)")))
+
+ (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.
+ (let ((rhp read-hash-procedures))
+ (dynamic-wind
+ (lambda ()
+ (read-hash-extend #\| (lambda args 'not)))
+ (lambda ()
+ (fold (lambda (x y result)
+ (and result (eq? x y)))
+ #t
+ (read-string "(this is #| a comment)")
+ `(this is not a comment)))
+ (lambda ()
+ (set! read-hash-procedures rhp)))))
+