1

代替:

(run-jetty (fn [request] (response "hello")) 6789)

我想(忽略给参数):

(run-jetty #(response "hello") 6789)

即,我想使用匿名函数来节省一些打字。显然,它会在运行时引发错误,因为匿名函数将被赋予一个它不想处理的参数(即请求)。那么实现这一目标的惯用方法是什么?

4

2 回答 2

3

我发现我的问题与这个重复。

我还发现constantly它确实是恒定的:它将缓存结果以供子序列使用。虽然这不是我想要的,但很高兴知道:

demo1.core=> (defn foo [] (rand))
#'demo1.core/foo
demo1.core=> (def aa (constantly (foo)))
#'demo1.core/aa
demo1.core=> (aa)
0.8006471724049917
demo1.core=> (aa 1)
0.8006471724049917
demo1.core=> (aa 1 2)
0.8006471724049917

以防万一像我这样的其他人正在寻找同样的东西。

于 2013-08-11T07:15:15.787 回答
3

这取决于您的确切用途,但我会使用该constantly功能。

(run-jetty (constantly (response "hello")) 6789)

如果您尝试使用匿名函数延迟计算,那么这将不起作用(提示:在这种情况下使用delayand force),但对于环处理程序,它会很好地工作。

于 2013-08-11T02:02:13.443 回答