最近Scalaのライブラリを作っていて自分でマクロを書く機会があったのでScalaのマクロを簡単に紹介をしてみました。発表資料はこちらです。
Macro in Scala from takezoe
www.slideshare.net
Lispはプログラム=データ構造なのでデータを操作する感覚でマクロを書くことができるのですが、Scalaではなかなか厳しいものがあります。Quillのようにマクロを活用したライブラリも出てきていますが、複雑なマクロは書くのもメンテするのもかなり大変ですし、scala.metaやマクロアノテーションなど将来的にどうなるのか不透明な部分があり、がっつり使うのは躊躇われる部分もあります。
Scalaでいきなり実用的なマクロを書こうとするとかなりハードルが高いので、マクロを学ぶことが目的なのであればまずLispを触ってみるのがよいかもしれません。ちなみに個人的にマクロに限らずLispには学びがたくさんあるので仕事で使うかどうかは別として全てのプログラマはLispを学ぶべきであると思っています。