标签: clojure

Clojure:如何重复异常?

我试图在放弃异常之前多次执行一个函数.但是在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

40
推荐指数
3
解决办法
5668
查看次数

Clojure的分析工具?

有没有人知道Clojure的一个好的分析工具或库?

我更喜欢可以在REPL中使用的东西,就像(with-profiling ...)Allegro Common Lisp那样.

沿着这些路线还有什么吗?

或者您对使用Clojure的(非商业)Java分析器有任何经验吗?

profiling clojure

40
推荐指数
4
解决办法
9789
查看次数

如何在Clojure中对功能进行基准测试?

我知道我可以花时间来评估一个功能,可以使用时间函数/宏在屏幕/标准输出上打印出来.

时间宏返回已计算函数的值,这使得内联使用它非常棒.但是我想在特定情况下自动测量运行时.

是否有一个函数可以返回某个库中的已用时间来帮助进行此基准测试?

benchmarking clojure

40
推荐指数
2
解决办法
1万
查看次数

Clojure常量的约定,样式和用法?

在样式,约定,效率等方面,在Clojure中定义常量的最佳实践是什么?

例如,这是对的吗?

(def *PI* 3.14)

问题:

常量应该在Clojure中大写吗?

在风格上,他们是否应该在一侧或两侧都有星号(*)?

我应该注意的任何计算效率考虑因素?

clojure

40
推荐指数
5
解决办法
1万
查看次数

为什么在Clojure中使用Maybe/Option并不是那么普遍?

为什么Clojure尽管如此强调功能范式,却不使用Maybe/ Optionmonad来表示可选值?Option在Scala中使用非常普遍,Scala是我经常使用的函数式编程语言.

monads functional-programming clojure option maybe

40
推荐指数
6
解决办法
8908
查看次数

任何clojurescript教程?

ClojureScript上有一些很好的教程吗?我想尝试一下,但不知道从哪里开始.

clojure clojurescript

40
推荐指数
5
解决办法
8517
查看次数

功能相当于装饰模式?

什么是函数式编程相当于装饰器设计模式?

例如,您如何在功能样式中编写此特定示例?

f# haskell design-patterns functional-programming clojure

40
推荐指数
5
解决办法
5629
查看次数

我们如何在Clojure中进行左右折叠?

减少工作正常,但它更像折叠左.有没有其他形式的减少让我折叠到右边?

clojure

40
推荐指数
2
解决办法
5697
查看次数

如何在Clojure中获得用户输入?

我正在学习clojure,但我想知道如何在clojure程序中获取和存储用户输入.我正在查看clojure api,我找到了一个名为read-line的函数,但是我不知道如果使用它是正确的函数...

无论如何,你如何在clojure中获得用户输入?

user-input clojure

39
推荐指数
2
解决办法
2万
查看次数

你如何在Clojure早期从函数返回?

Common Lisp有return-from; return当你想从函数中提前返回时,有什么类型的Clojure吗?

return clojure

39
推荐指数
4
解决办法
2万
查看次数