2017-10-09 10 views
2

基本的にxに対してn回n回fを適用したいだけで、結果にのみ興味があります。 (nth (iterate f x) n)より良い方法はありますか?コメント者が言ったように開始値にn回の関数を適用する

+1

これは既にかなり簡潔で読みやすいです。あなたがゴルフをしていない限り、私はあなたがそれよりはるかに良くなるとは思わない。それがあまりにも多いと思うなら、あなたはいつもそれを関数で取り除くことができます。 – Carcigenicate

+0

私は反復の結果にのみ興味があることがよくあります。ちょうどもっと表現力豊かな方法が組み込まれているのではないかと疑問に思っています。私は '(dotimes nx body)'のようなものを監督しています。 –

+0

まだあなた自身のライブラリを立ち上げ、そこにショートカット機能。私はこれを表現するより良い "生の"方法を見ることができません。 "xの上のfのn番目の反復"はすでにかなり良い読み込みます。 – Carcigenicate

答えて

2

とあなたの解決策はすでにOKです。 別のオプションは、この多分のように、compを使用することです。それはあなたがいずれかの局面では、次に良い場合

user> (defn n-times [n f] 
     (apply comp (repeat n f))) 
#'user/n-times 

user> ((n-times 10 inc) 1) 
;;=> 11 

はまだ私は本当に言うことができません。 もう少し機能的かもしれません[ish]

関連する問題