ClojureとScalaはどちらも合成関数/メソッドを持っています(それぞれcomp
と.compose
)。 Scalaには.compose
と同じ方法で動作するメソッド.andThen
がありますが、逆の順序で関数アプリケーションをネストします。この関数のアナログはClojureに存在しますか?ScalaのandThenのClojure相当
(defn and-then [& fns] (apply comp (reverse fns)))
のように簡単に書くことができますが、Clojureではスレッドマクロの式をポイントフリー関数に変換する自然なアプリケーションがあり、例えば以下の2つの式は単項場合に相当します:#(->> % a b c)
と(and-then a b c)
私は 'and-then'がプレフィックス言語のベストネームではないことに同意しますが、私はClojureがもっと理にかなった名前のものを持っていることを期待していました。スレッディングマクロは多くの状況で優れていますが、(計算された値ではなく)関数を返す関数(マクロではない)を持つことが有益な場合があります。 – user12341234
確かに。あなたが提案した定義で自分の 'rcomp'を定義するだけのプロジェクトがたくさんあるようです。 –