首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clojure koans解决方案,但它们通常使用函数的名称编写得更好。

Clojure koans解决方案,但它们通常使用函数的名称编写得更好。
EN

Stack Overflow用户
提问于 2019-02-06 22:58:49
回答 3查看 303关注 0票数 0

在空白处要填什么才能通过?

代码语言:javascript
复制
(= 25 (__ square))

这个问题来自克洛尔科恩。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-06 23:22:16

这是一个愚蠢的问题,不能出现在克鲁斯科恩身上。我不记得有什么奇怪的事情,当我在2014年审查考恩。

以下是答案:

代码语言:javascript
复制
(fn [f] (f 5))  ; missing piece

您还需要知道,从前面的问题来看,函数square(fn [x] (* x x))。它们必须像上面那样定义一个(非常愚蠢的格式)函数并在适当的地方调用它。在现实生活中,我从未见过这种可怕的形式。

为了记录在案,整个答案看上去如下:

代码语言:javascript
复制
(= 25 ( (fn [f] (f 5)) square))

前面的问题#9定义了:

代码语言:javascript
复制
(defn square [n] (* n n))

P.S.如果您还没有看到它,请查看这些站点以获得Clojure文档、示例和参考资料:

票数 0
EN

Stack Overflow用户

发布于 2019-02-07 14:08:32

我们需要一个应用于函数square的函数,从而生成25。答案是艾伦·汤普森 ..。

代码语言:javascript
复制
(fn [f] (f 5))

..。是我们所期待的。但还有无数的其他人。最简单的是返回25的函数,不管它的论点是什么:

代码语言:javascript
复制
(fn [_] 25)

这是一个足够普通的结构,有一个核心函数constantly来完成它。因此,我们可以将上面的内容缩写为

代码语言:javascript
复制
(constantly 25)

通过重写对参数square的响应,我们可以将任何能够接受单个参数的函数转换为解决方案。

代码语言:javascript
复制
(defn convert [g] (fn [x] (if (= x square) 25 (g x))))

例如,

代码语言:javascript
复制
=> ((convert +) square)
25
票数 2
EN

Stack Overflow用户

发布于 2020-05-22 12:19:26

如何使用以下高阶函数:

代码语言:javascript
复制
#(% 5)

下面给出了最终的解决方案?

代码语言:javascript
复制
(= 25 (#(% 5) square)))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54563856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档