read-accept-dot
とでドットの読み取りを無効にできますがread-accept-infix-dot
、ドットがあるとエラーになります。したがって、ここでカスタムの readtableを使用したいようです(ガイドのセクションも読んでください)。
#lang racket
(struct test (num) #:prefab)
(define rt:no-dots
(make-readtable (current-readtable)
#\. 'non-terminating-macro ( _ #'|.|)))
(define (read-with-dots str)
(parameterize ([current-readtable rt:no-dots])
(read (open-input-string str))))
(define s3 (read-with-dots "((AK= #s(test .)) (AV))"))
(match s3
[`((AK= ,(struct test (val))) (AV)) (displayln val)])
または、ドットをコメントとして扱うようにすることもできます:
(define rt:no-dots
(make-readtable (current-readtable)
#\. 'non-terminating-macro
( _ (make-special-comment #f))))