ClojureでJavaメソッドを関数合成で使う方法

最近Clojureに再入門していて、その中で調べたんだけど使わなかったので、メモっておく。
TomcatとClojureで戯れ続けていたらいつか使うかもしれないし。

と言っても、匿名関数で包むだけなんだけど。

(comp #(.javaMethodB %) #(.javaMethodA %))

多分これだけならdotoとかの他の方法使ったほうが確実にいい。
今回はJavaの配列に格納されたインスタンスからgetterと型キャストを経て得られたインスタンスにsetterを実行する、 という処理をまとめて実行しようと思ったためにインスタンスメソッドを関数合成したら良いんじゃ、と思いついたのが調べた理由。

お前何言ってるんだって感じなのでコードにすると、こんな感じ。

(map
  (comp #(.setExecutor % executor) #(cast AbstractProtocol %) #(.getProtocolHandler %))
  (.findConnector service))

実際には このタイミングでExecutorをセットしても意味がなかったからお蔵入りになったんだけど。
(ところで、関数合成ってこれで正しいよね?)