除了循环遍历序列以及从中获取每个元素之外,还有什么比clojure-idiomatic方法更多?这是我的意思的循环版本:
(def a-seq (list 700 600 500 400 300 200 100))
(loop [s a-seq]
(if (seq s)
(do (instrument (first s)) (recur (rest s)))
"End"))
我将(first s)
作为一个频率馈入一个正弦波发生器,如下所示(在泛音lib中):
(use 'overtone.core)
(definst instrument [frequency 0] (sin-osc frequency))
答案 0 :(得分:1)
使用doseq
:
(doseq [item a-seq]
(println item))
(println "End")
答案 1 :(得分:1)
map
功能是您想要使用的功能。
(map instrument a-seq)
这将按顺序为instrument
中的每个元素调用a-seq
函数一次。
请注意,地图是懒惰的,因此您需要使用地图的结果来保证发生任何副作用,或致电doall
。