この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を内部に配置したときにこれを実現しました)。
誰かがそれを実装するためのより良いアイデアを持っているなら、私に教えてください。