我不知道如何在 Clojure 中实现这段 Python 代码
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 时我意识到了这一点)。
如果有人有更好的想法来实现它,请赐教。