说我想让用户逐行输入矩阵。所以我首先询问矩阵的大小,然后我想询问用户输入行的提示,如“第 1 行”“第 2 行”等。
最简单的事情似乎是拥有一个可变向量并使用诸如doseq之类的一些thinkg来对其进行变异。
但我很好奇是否还有更多的clojure方法可以做到这一点。我最初的想法是使用 for
or map
。但它很懒,所以无法打印出提示。
所以类似的东西(map (fn [i] (do (printf "row %d \n" i) (read-line))) (range size))
也会在结果列表中包含提示。
然后我想我可以使用宏来产生类似的东西
[((println "row i") (read-line))
((println "row i") (read-line))
((println "row i") (read-line)) ...]
无论如何我可以在没有宏或可变变量的情况下做到这一点吗?哪种方式更好?