argonautのmacro書いた。そしたら添削してもらった

以前書いたこれ

コンパイル時に、 String を lift json に変換する macro
https://github.com/xuwei-k/json_macro


のargonaut版を書いてみようと思いたち、しかしScala2.10のマクロは辛いし、勉強がてらちょっとだけあたらしいことに挑戦するため、quasiquoteのコンパイラプラグイン使いつつ、2.10と2.11でクロスビルドするかー。

とやってみたのがこち

https://github.com/xuwei-k/argonaut-macro

quasiquote使うと、かなり短くなってわかりやすくなるし、scala-reflect内部のクラス知る必要もなく、なんとなく書けば動く感あるし素晴らしいですね。というか、Scala2.10のネイティブのマクロがものすごく使いづらかっただけですが・・・。


そして、それをtweetしたらreplyがきて

添削してもらいました。ありがたい。
Liftableという型クラス(?)が、scala-reflect内部にあるらしいです。あと、こうやってマクロ書く場合はこのコミット
https://github.com/travisbrown/argonaut-macro/commit/226e8814f5d1
のように、package名も含めた名前を指定したほうがいいらしいです。
たしかに、こうしないとユーザー側で"import argonaut._"しないといけなくなった、なるほど勉強になる・・・。