日曜プログラミング

休日趣味でやってるプログラミング関連記事をダラダラと

Clojure の一つの名前空間で複数ファイルに分けたい

とあるオレオレライブラリの管理をする時、ソースファイルとしてはある程度機能別に分けたいのだが、 そのライブラリを使うとなった時にはあまり require, use で指定する名前空間は増やしたくない。

そう言う時どうすりゃいいんだろと少しググって見たら、Clojure だと以下のリンク先のようにするのが良さそう。

Splitting a Clojure namespace over multiple files - Stack Overflow

簡単に言うと ns マクロで宣言した名前空間と同名の clj ソースは普通に用意し、分割したいコー ド部分の方は in-ns で 同じ名前空間にはするが別名のファイルとし、元の方で load すると言う もの。

この発想はなかった。

と言うか大元の Clojure のソースでの in-ns の使い方みる感じ本来こっちの目的で 用意したんじゃないかと思える。in-ns は今まで REPL での名前空間切替にしか使ってなかったがこれは参考になった。