clojureのシリアライズ補助手続きを書いた

http://d.hatena.ne.jp/ranekov/20140127/1390842604 の結論のところで

  • 「間接的に参照を保持する」
  • 「object-arrayを使う」

と書いたが、どう考えても不便そうなので、結局、「java array, atom, ref類を含む構造体を、トポロジカル構造を再現できるようにしつつ、edn安全な要素だけで構成されたvectorとしてpack/unpackする」というモジュールを書いてしまった。

とりあえずゲーム用に必要な最小限の実装だが、100行ぐらいでできた。
こんな簡単ならさっさとやればよかった。


このモジュール自体は文字列やバイト列に書き出す機能は持っていないので、これを使ってpackしたvectorを、ednやnippyで更に文字列やバイト列に書き出して保存する。
リストアする時も同様に、ednやnippyでvectorに戻してからunpackする。


将来的にはリポジトリを分けてclojarsとかに登録したいが、まず先に二月中にゲームを完成させてから!
(上のURLやファイル構成がすごい適当なのは、このモジュールの実際の保存先が作りかけゲームのプライベートリポジトリの中の為。)