必须在空白处填写通行证?
(= 25 (__ square))
这个问题来自clojure koans
答案 0 :(得分:2)
我们需要一个应用到函数sudo
并产生square
的函数。答案given by Alan Thompson ...
25
...是预期的。但是还有无数其他人。最简单的函数是returnis 25,无论其参数如何:
(fn [f] (f 5))
这是一个足够常见的构造,有一个核心功能constantly
可以完成。因此,我们可以将以上缩写为
(fn [_] 25)
通过覆盖对参数(constantly 25)
的响应,我们可以将能够接受单个参数的任何函数转换为解决方案:
square
例如
(defn convert [g] (fn [x] (if (= x square) 25 (g x))))
答案 1 :(得分:1)
如何使用以下高阶函数:
#(% 5)
下面给出哪种最终解决方案?
(= 25 (#(% 5) square)))
答案 2 :(得分:0)
恕我直言,这是Clojure Koans提出的一个愚蠢问题。我在2014年经历《 Koans》时没有任何奇怪的事情。
这是答案:
(fn [f] (f 5)) ; missing piece
您还需要知道上一个问题中的功能square
是(fn [x] (* x x))
。他们必须如上所述定义一个(非常笨拙的格式)函数并就地调用它。在现实生活中,我从未见过如此可怕的形式。
记录下来,整个答案如下:
(= 25 ( (fn [f] (f 5)) square))
先前问题#9定义的地方:
(defn square [n] (* n n))
P.S。如果您还没有看到它,请查看以下站点以获得Clojure文档,示例和参考: