повторить попытку 3 раза, прежде чем выдать исключение - в ближайшем будущем
Я не знаю, как реализовать этот кусок кода Python в Clojure
for i in range(3):
try:
......
except e:
if i == 2:
raise e
else:
continue
else:
break
Интересно, почему что-то такое простое в Python так сложно в Clojure. Я думаю, что трудность заключается в том, что Clojure является функциональным языком программирования и поэтому не подходит для такой неотложной задачи. Это моя попытка:
(first
(remove #(instance? Exception %)
(for [i (range 3)]
(try (......)
(catch Exception e
(if (== i 2)
(throw e)
e)))))))
Это очень некрасиво и, что еще хуже, не работает так, как ожидалось. Цикл for фактически выполняется полностью, а не лениво (я понял это, вставив println внутрь).
Если у кого-то есть идея лучше реализовать это, пожалуйста, просветите меня.