2
基本的にxに対してn回n回fを適用したいだけで、結果にのみ興味があります。 (nth (iterate f x) n)
より良い方法はありますか?コメント者が言ったように開始値にn回の関数を適用する
基本的にxに対してn回n回fを適用したいだけで、結果にのみ興味があります。 (nth (iterate f x) n)
より良い方法はありますか?コメント者が言ったように開始値にn回の関数を適用する
とあなたの解決策はすでにOKです。 別のオプションは、この多分のように、comp
を使用することです。それはあなたがいずれかの局面では、次に良い場合
user> (defn n-times [n f]
(apply comp (repeat n f)))
#'user/n-times
user> ((n-times 10 inc) 1)
;;=> 11
はまだ私は本当に言うことができません。 もう少し機能的かもしれません[ish]
これは既にかなり簡潔で読みやすいです。あなたがゴルフをしていない限り、私はあなたがそれよりはるかに良くなるとは思わない。それがあまりにも多いと思うなら、あなたはいつもそれを関数で取り除くことができます。 – Carcigenicate
私は反復の結果にのみ興味があることがよくあります。ちょうどもっと表現力豊かな方法が組み込まれているのではないかと疑問に思っています。私は '(dotimes nx body)'のようなものを監督しています。 –
まだあなた自身のライブラリを立ち上げ、そこにショートカット機能。私はこれを表現するより良い "生の"方法を見ることができません。 "xの上のfのn番目の反復"はすでにかなり良い読み込みます。 – Carcigenicate