以下のように構造体を定義しました。
(struct vector (x y z)
#:methods gen:custom-write
[(define (write-proc vector port mode)
(let ([print (if mode write display)])
(write-string "<")
(print (vector-x vector))
(write-string ", ")
(print (vector-y vector))
(write-string ", ")
(print (vector-z vector))
(write-string ">")))])
しかし、構造体が3回表示されているREPLで奇妙な動作が発生しています。
> (define a (vector 1 2 3))
> a
<1, 2, 3><1, 2, 3><1, 2, 3>
何か間違ったことをしているに違いありませんが、問題が見つかりません。誰かが私に3倍の出力がある理由を説明できますか?