no sé cómo implementar esta pieza de código Python en Clojurede volver a intentar algo 3 veces antes de lanzar una excepción - en clojure
for i in range(3):
try:
......
except e:
if i == 2:
raise e
else:
continue
else:
break
Me pregunto por qué algo tan simple en Python es tan duro en Clojure. Creo que la dificultad radica en que Clojure es un lenguaje de programación funcional y, por lo tanto, no es adecuado para una tarea tan imperativa. Este es mi intento:
(first
(remove #(instance? Exception %)
(for [i (range 3)]
(try (......)
(catch Exception e
(if (== i 2)
(throw e)
e)))))))
Es muy feo, y lo que es peor, no funciona como se esperaba. El bucle for es realmente evaluado completamente en lugar de perezoso (me di cuenta de esto cuando puse un println dentro).
Si alguien tiene una mejor idea para implementar eso, por favor ilumíname.
posible duplicado de [Clojure: ¿Cómo recurrir con la excepción?] (Http: // stackoverflow.com/questions/1879885/clojure-how-to-recur-upon-exception) – amalloy