Clojure koans解决方案-但是通常最好使用函数名称来编写它们

时间:2019-02-06 22:58:50

标签: clojure

必须在空白处填写通行证?

(= 25 (__ square))

这个问题来自clojure koans

3 个答案:

答案 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文档,示例和参考: