この記事は言語実装 Advent Calendar 2021の12日目の記事です。12日はとっくに過ぎているのですが、カレンダーが空いていたので書かせて頂きました。 自作言語llrlには、LLVM JITを用いたマクロ機能が備わっています。この機能の実装過程での課題を振り返ります。 以下の記事もご参照ください。 マクロの背景: llrlの概要 マクロに関連する機能を中心的に、llrl言語自身について紹介します。 llrlはLisp-likeな構文の自作プログラミング言語です。特に特定の用途に特化しているわけでもない汎用(general-purpose)プログラミング言語ですが、Lispのように、プログラムがS式で記述されるのが特徴的です。いくつか例を見てみます。 ; 関数定義は (function signature body ...) で行う (function (fibonacci-n