关于metronome
Clojure Overtone 库中的函数,我研究过的所有示例似乎都这样使用它:(示例取自https://github.com/overtone/overtone/wiki/Live-coding)
(defn player [beat]
(at (metro beat) (kick))
(at (metro (+ 0.5 beat)) (c-hat))
(apply-by (metro (inc beat)) #'player (inc beat) []))
(player (metro))
(对于上下文:metro 是一个节拍器实例;kick 和 c-hat 播放声音)如您所见,递归由调用自身的函数处理。除了关于泛音的文章外,大多数其他 Clojure 文章都建议不要使用这种类型的递归,并建议使用 recur 函数来提高效率。所以我的问题是:有没有更好的方法来编写上述函数?
谢谢你,尼尔