我试图在放弃异常之前多次执行一个函数.但是在Clojure中从catch块中重现是无效的.怎么能实现这一目标?
(loop [tries 10]
(try
(might-throw-exception)
(catch Exception e
(when (pos? tries) (recur (dec tries))))))
java.lang.UnsupportedOperationException: Cannot recur from catch/finally
Run Code Online (Sandbox Code Playgroud)
我能找到的最好的是以下笨拙的解决方案(包装在func中并调用它)
(defn do-it []
(try
(might-throw-exception)
(catch Exception e nil)))
(loop [times 10]
(when (and (nil? (do-it)) (pos? times))
(recur (dec times))))
Run Code Online (Sandbox Code Playgroud) 有没有人知道Clojure的一个好的分析工具或库?
我更喜欢可以在REPL中使用的东西,就像(with-profiling ...)Allegro Common Lisp那样.
沿着这些路线还有什么吗?
或者您对使用Clojure的(非商业)Java分析器有任何经验吗?
我知道我可以花时间来评估一个功能,可以使用时间函数/宏在屏幕/标准输出上打印出来.
时间宏返回已计算函数的值,这使得内联使用它非常棒.但是我想在特定情况下自动测量运行时.
是否有一个函数可以返回某个库中的已用时间来帮助进行此基准测试?
在样式,约定,效率等方面,在Clojure中定义常量的最佳实践是什么?
例如,这是对的吗?
(def *PI* 3.14)
问题:
常量应该在Clojure中大写吗?
在风格上,他们是否应该在一侧或两侧都有星号(*)?
我应该注意的任何计算效率考虑因素?
为什么Clojure尽管如此强调功能范式,却不使用Maybe/ Optionmonad来表示可选值?Option在Scala中使用非常普遍,Scala是我经常使用的函数式编程语言.
ClojureScript上有一些很好的教程吗?我想尝试一下,但不知道从哪里开始.
什么是函数式编程相当于装饰器设计模式?
例如,您如何在功能样式中编写此特定示例?
我正在学习clojure,但我想知道如何在clojure程序中获取和存储用户输入.我正在查看clojure api,我找到了一个名为read-line的函数,但是我不知道如果使用它是正确的函数...
无论如何,你如何在clojure中获得用户输入?
Common Lisp有return-from; return当你想从函数中提前返回时,有什么类型的Clojure吗?
clojure ×10
benchmarking ×1
f# ×1
haskell ×1
maybe ×1
monads ×1
option ×1
profiling ×1
return ×1
user-input ×1