defrecordで定義したデータを文字列化したときの内容はカスタマイズできるのでしょうか
clojure初心者です。
今日ようやくdefrecordのことを初めて知りました。深いことまでは分かりませんが、ふと思ったことがあります。
JavaであってもtoStringメソッドがクラスに定義されていればそのクラスオブジェクトに合った文字列表現を返すことができるように、clojureの場合も似たような仕組みはあるのでしょうか?
興味半分にdefrecordで定義したデータ型をstr関数に渡すと何かハッシュ値のようなものが出てきました。
user=> (defrecord abc [aiu xyz])
user.abc
user=> (->abc 123 "ABC")
#user.abc{:aiu 123, :xyz "ABC"}
user=> (str (->abc 123 "ABC"))
"user.abc@79b2cefe"
この最後の部分を例えば"[abc: 123 xyz]"のような文字列表現に変えることはできるのでしょうか。もしかするとそんなことをしたらclojureの動作を破壊してしまうのかもしれませんが……
defrecordではない、ごく単純な例だとデータの内容がわかりやすく文字列化されているようです。
user=> (str #{1 2 3})
"#{1 3 2}"
rubyなどではこの手の方法をデバッグで有効に使うこともあったので質問してみました。
今これがわからなくて困っているわけではないですが、後々のプログラミングで気になるようにも思うので、ご教示いただけると嬉しいです。よろしくお願いします。
※ubuntu 15.04/windows7で、Clojure 1.8を使っています。