Цикл Do-while в Clojure?

Итак, я хочу сначала выполнить кучу кода, а затем затем спросите пользователя, хочет ли он сделать это снова. Я подумал, что наиболее удобным способом сделать это будет цикл do-while, как в C ++, и, поскольку мне не удалось найти никаких функций do-while в Clojure, я написал следующее:

(defmacro do-while
  "Executes body before testing for truth expression"
  [test & body]
  `(do (do ~@body) (while ~test ~@body)))

Было бы лучше (как в более идиоматическом Clojure-ish) способ написания этого макроса или, возможно, лучший способ делать то, что я хочу, без прохождения маршрута do-while?

7
задан wrongusername 30 December 2011 в 03:37
поделиться