case class用のscalazのEqualとOrderのマクロ作った

だいぶ今更感ある


大雑把な解説

マクロの公式の解説で

http://docs.scala-lang.org/ja/overviews/macros/implicits.html

Lars Hupel 氏が紹介した TypeClass 型クラステクニックのような型レベルプログラミングに基づいたジェネリックプログラミングという方法もあるが、やはりこれも手書きの型クラスのインスタンスに比べると性能が劣化するのが現状だ。

implicit の具現化

implicit マクロを用いることで、型クラスのインスタンスを手書きで定義する必要を無くし、性能を落とさずにボイラプレートを一切無くすことができる。

とありますが、これはそれのことでいいのかな?(よくわかってない)


あと、zeroapplyというライブラリですが、もともと効率のよいApplicativeをいい感じにマクロで展開して最適化するライブラリだったんですが
(詳細は以下の過去ブログ参照)


Scalaのマクロ使ってコンパイル時に全部Applicaiveをインライン展開するzeroapplyというライブラリを作った



今回のマクロ、べつに単独のライブラリでもよかったのですが、新しく作るよりzeroapplyに入れてしまったほうが楽だったので入れてしまいました。依存ライブラリが同じだったりで都合がよかったので。