Clojure> (doc foreach)
Unable to resolve var: foreach in this context
Clojure> (doc map)
-------------------------
clojure.core/map
([f coll] [f c1 c2] [f c1 c2 c3] [f c1 c2 c3 & colls])
Run Code Online (Sandbox Code Playgroud)
当然,我可以使用"map"来模仿"foreach",但是地图总是返回nil,这使输出在以下函数中变得丑陋:
(defn div618 [p1 p2]
(let [ratio [0.,0.191,0.236,0.382,0.5,0.618,0.809,1.]
price (fn [r] (if (<= p1 p2) (+ p1 (* (- p2 p1) r)) (- p1 (* (- p1 p2) r))))]
(if (<= p1 p2)
(**map** #(println (format "-------%.3f %.2f-------" %1 (price %1))) (reverse ratio))
(**map** #(println (format "-------%.3f %.2f-------" %1 (price %1))) ratio))))
Run Code Online (Sandbox Code Playgroud)
祝商祺!
Hug*_*ugh 58
我想doseq可能就是你要找的东西:
(doseq [i [0 1 2 3]] (println i))
Run Code Online (Sandbox Code Playgroud)
然而,这仍然会回归nil--Clojure中的所有形式都将评估为某些价值; 没有与Common Lisp相同的东西(values).
从Clojure 1.7开始,您可以使用run!:
user=> (run! println (range 10))
0
1
2
3
4
5
6
7
8
9
=> nil ; returns nil
Run Code Online (Sandbox Code Playgroud)
请参阅此答案,以了解如何在单独的行clojure上打印列表的每个项目?
我认为你想要 clojure 的列表理解,请参阅:http ://en.wikibooks.org/wiki/Clojure_Programming/Concepts#List_Compressive