在 Clojure 中如何迭代直到达到固定点?

2023-12-20

我经常处于这样的位置:我的代码如下所示:

(iterate improve x)

我正在寻找第一个值,该值不再比前一个值有所改进。两者都不filter nor take-while帮助他们找到一个明显的解决方案。然而,我犹豫着要不要写出来:

(loop [current x
       next (improve x)]
  (if (= current next)
    current
    (recur next (improve next))))

or:

(let [improvements (iterate improve x)]
  (->> (map vector improvements (rest improvements))
    (filter (partial apply =))
    (ffirst)))

因为在某些时候这会变得重复,并且定点迭代肯定是一项基本任务,必须在某个地方有某种库支持,对吧?


您可以使用reduce and reduced必要时停止。reduced https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/reduced将参数包装在一个特殊的对象中,该对象reduce旨在查找并立即停止处理返回包装值。

(def vals (iterate improve x))

(reduce #(if (= %1 %2) (reduced %1) %2) vals)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Clojure 中如何迭代直到达到固定点? 的相关文章

  • 并行迭代器

    我正在设计一个 C 数据结构 用于图形 供并行代码 使用 OpenMP 使用 假设我想要一个能够迭代所有元素 节点 的方法 当然 这个迭代将是并行的 是否可以使用迭代器来实现此目的 迭代器应该是什么样子才能实现并行访问 在这种情况下 您会建
  • Clojure/Java:用于声音频谱分析的 Java 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以接受大量音频数据并返回给定频带内随时间变化的平均幅度的库 我已经在 comp dsp
  • 从命令行将 clojure 源代码编译为类(AOT)(不使用 lein)

    我正在尝试将 clojure 源代码编译成类文件 并仅使用命令行运行它 没有 lein 也没有 可能 回复 我有 core cljsrc hello目录 src hello core clj 这是源代码 ns hello core defn
  • Clojure / Noir:强制 HTTPS,如果请求是 http:// 则重定向到 https://

    我正在尝试在我的网站上强制使用 SSL 我想要一个环形中间件 将网站重定向到与 https 相同的 URL 如果它只是 http 我编写了以下代码 但除了检查请求方案并打印它应该重定向到的 URL 之外 它实际上没有做任何事情 defn h
  • 为什么leiningen启动时那么慢?

    我在用着lein repl在控制台中执行 clojure repl 当我运行它时 需要超过15秒 当我跑步时java cp clojure 1 6 0 jar clojure main 只需几秒钟 Why is lein repl太慢了 有
  • n 二叉树的后序遍历

    我需要以下代码的帮助来回答 我正在尝试使用堆栈而不是递归在 n 叉树上执行后序遍历 因为 python 有 1000 次递归的限制 我找到了相同的预序遍历代码 https www geeksforgeeks org iterative pr
  • 将向量作为绑定传递给 for 宏时出现问题

    我有任意数量的列表 我想使用 for 宏来处理它们 我想创建一个传递向量作为绑定的函数 因为列表的数量各不相同 如果我对绑定进行硬编码 它会按我的预期工作 gt def list1 pink green gt def list2 dog c
  • 可以混合使用 JVM 语言吗?即:Groovy 和 Clojure

    我知道你可以轻松地混合groovy java clojure java 无论什么JvmLang java 这是否也意味着我也可以让 clojure 和 groovy 代码进行交互 如果我使用 Grails 或 jRoR 我也可以在该环境中使
  • 获取调用表单的名称空间

    我想要一个宏this ns这样它就会返回调用它的位置的名称空间 例如 如果我有这段代码 ns nstest main require nstest core as nstest defn ns str x gt x getName name
  • Leiningen 在构建可用的 uberjar 时遇到问题

    我们正在尝试与 Leiningen 一起构建我们的 Clojure 项目 我们通过执行以下操作成功创建了 uberjar 前提条件 project clj 文件列出了依赖项 main my project core在项目 clj中 core
  • 无法删除 IntelliJ/Cursive 中的括号

    我正在使用 IntelliJ Cursive 编写 Clojure 我发现 删除括号的唯一方法就是将其中的内容完全删除 然后才能将括号删除 例如 假设我有以下代码 list 我只想删除左括号 一旦我在左括号上按退格键 IDE 就会忽略此行为
  • 迭代函数可以调用自身吗?

    当观看下面的 MIT 6 001 课程视频时 讲师在 28 00 将此算法标记为迭代 但是 在 30 27 他说这个算法和实际的 递归 算法都是递归的 该函数正在使用基本情况调用自身 那么这次迭代情况如何 private int itera
  • 为什么我收到无法动态绑定非动态变量?

    我正在尝试使用 clojure tools trace 命名空间的 dotrace 函数 dotrace my function my function 5 但我收到了这个错误 IllegalStateException 无法动态绑定非动态
  • 迭代列表的奇怪速度差异

    我创建了两个重复两个不同值的长列表 在第一个列表中 值交替出现 在第二个列表中 一个值出现在另一个值之前 a1 object object 10 6 a2 a1 2 a1 1 2 然后我迭代它们 不对它们执行任何操作 for in a1 p
  • 使用 Compojure、Hiccup 和 Ring 上传文件

    要将文件上传到我用 Clojure 编写的服务器 我需要一个如下所示的客户端表单
  • 无法理解 Java 地图条目集

    我正在看一个 java 刽子手游戏 https github com leleah EvilHangman blob master EvilHangman java https github com leleah EvilHangman b
  • Clojure/Ring:使用环码头适配器,大请求会给我一个 413: FULL HEAD 错误。

    使用 Ring 的 Jetty 适配器 如果我的请求太大 我会收到 413 FULL HEAD 错误 我追踪到一个名为 headerbuffersize 的属性 但是当我尝试在 run jetty 调用中设置它时 我仍然得到 413 有没有
  • 确保 Clojure 中只有一个服务实例正在运行/启动/停止的规范方法?

    我正在用 Neo4j 支持的 Clojure 编写一个有状态服务器 它可以服务套接字请求 例如 HTTP 当然 这意味着我需要能够从该服务器内启动和停止套接字服务器 在设计方面 我希望能够在此服务器中声明一个 服务 并启动和停止它 我在 C
  • 将数字的各个数字部分相加/求和的最快方法

    不久前 我在数学论坛上看到一个问题 其中一个人正在讨论一遍又一遍地将数字中的数字相加 直到达到个位数 即 362 将变成 3 6 2 这将变成 11 然后 11 将变成 1 1 将变成 2 因此 362 将返回2 我写了一些很好的代码来得到
  • 在 Clojure 中解压缩 zlib 流

    我有一个二进制文件 其内容由zlib compress在Python上 有没有一种简单的方法可以在Clojure中打开和解压缩它 import zlib import json with open data json zlib wb as

随机推荐

  • 如何为这个 jQuery 动画添加加速?

    我能够动画化我的 div 更多信息 https stackoverflow com questions 7121147 slideup only hides cant show using slideup from bottom 100px
  • 为什么在链表中查找循环时将指针增加 2,而不是 3、4、5?

    我看了一下question https stackoverflow com questions 2663115 interview question how to detect a loop in a linked list已经讨论了在链表
  • 如何在摩纳哥编辑器中添加打开下拉菜单的操作?

    我知道如何在 Monaco 编辑器的上下文菜单中添加条目 editor addAction 如何添加打开下拉列表的操作作为 命令面板 操作 正如中提到的这个问题 https github com Microsoft monaco edito
  • 使用终端,如何让 OS X 使用 PHP 的 MAMP 版本

    我目前正在学习 Yii 框架 昨天运行的教程之一要求我测试项目的数据库连接 这里的细节并不是太重要 但基本上当我运行 shell 并输入命令时 它会抛出如下错误 server trackstar charlieryan protected
  • Windows 服务的心跳活动

    我有许多 Windows 服务 用 C 4 0 编写 它们以不同的时间间隔连接到数据库并执行各种复杂的任务 其中一些任务每天仅每隔 X 小时发生一次 但是 服务器支持团队想知道 Windows 服务是否确实在运行 因为任务之间可能存在很大的
  • Logstash:是否可以将文档保存在内存中?

    我正在尝试将数据保存在内存中 以便能够在过滤器部分中快速检索 事实上 当我收到新文档时 我想检索以前的相关文档以计算一些新指标 谁能告诉我这是否可能 如果是 我怎样才能实现这一目标 非常感谢 Joe 实现这一目标最接近的方法是使用elast
  • 如何使用另一个表中的随机行更新表的每一行

    我正在构建我的第一个去识别脚本 但我的方法遇到了问题 我有一张桌子dbo pseudonyms whose firstname列填充有 200 行数据 此 200 行列中的每一行都有一个值 无空值 这个表还有一个id数字为 1 200 的列
  • React & Clarifai:未捕获的 ReferenceError:流程未定义

    我正在使用 Clarifai API 中的人脸检测模型构建一个 React 应用程序 当我import Clarifai from clarifai VS Code 提示我此警告 Could not find a declaration f
  • 如何使用python从gs存储桶中获取文件数量

    我想计算 gs 存储桶中的文件数量 该存储桶的文件夹名为我的文件管理器 假设项目名称为PrName存储桶名称是测试文件那么我如何使用 python 3 读取该存储桶中存在的文件数量 你可以使用方法 list blobs 在您的存储客户端上计
  • PHP自定义基于字符串出现次数的排序函数?

    假设我有一个数组 arr array Animal Dog Subject Physics Place Tokyo Sport Tennis 我想要usort具有以下标准 如果它包含tokyo排名第一 如果包含tennis排名第二 如果包含
  • JSON key 可以是字符串或对象

    我想解析一些 JSON 但其中一个键要么是字符串 要么是对象 这是我当前的结构 https github com PhillippOhlandt pmtoapib blob master CollectionItemRequest go L
  • 什么是 objc_msgSend 以及为什么它占用如此多的处理时间?

    我一直在分析我的回合制游戏应用程序 并且遇到了一个有趣的 也许 问题 根据下图 似乎objc msgSend占用了我的应用程序运行时间的近一分钟 这是什么 这是代码写得不好的标志吗 谢谢 正如 user1118321上面所说 objc ms
  • 在设计时设置复合 WF4 活动的内部属性

    我想创建一个复合 Windows 工作流活动 在 NET 4 下 其中包含预定义的 ReceiveAndSendReply 活动 有些属性是预定义的 但其他属性 特别是 ServiceContractName 需要在设计器中设置 我可以将其
  • 如何(正确)在 AWS Lambda 函数中使用外部凭证?

    我有一个用 Python 编写的 非常基本但工作完美 AWS lambda 函数 但是它具有要连接到的嵌入式凭据 1 外部网络服务 2 DynamoDB 表 该函数的作用相当基本 它针对服务发布登录信息 使用凭证 1 然后将部分响应状态保存
  • 有人可以解释一下这个 bash 命令吗?

    从网站上可以看到RVM https rvm io bash lt lt curl https rvm io releases rvm install head 第一个小于号有什么作用 关于 lt 我知道这是一个愚蠢的问题 但我很想了解这一点
  • 有关 XML 布局标签属性的 Android SDK 信息

    我正在研究 Android SKD 文档 我想知道在哪里可以找到有关定义应用程序界面布局时使用的 XML 标签属性的信息 例如安卓 名称 安卓 id class 片段标签的属性等 我在参考文档中找不到它们 该文档仅列出了 Java 类的文档
  • Django:ValueError:以 10 为基数的 int() 的文字无效:

    我正在尝试 django 中的一些东西 只是一个简单的表单 它将添加每次登录数据库的尝试 它导致 ValueError invalidliteral for int with base 10 我已经检查了很多问题 但无法克服此错误 我有这样
  • 真正的客户端 HTML 包括

    HTML 不支持客户端包含其他 HTML 例如使用 C 获取 include指示 相反 客户端 HTML 包含的主要工具似乎是iframe object 尤其是 jQuery 的 load See 这个线程 https stackoverf
  • 如何在HTML页面中播放视频

    我正在尝试在 HTML 页面上播放 mp4 视频 我搜索了网络并发现在 HTML5 中我可以使用video像下面这样的标签
  • 在 Clojure 中如何迭代直到达到固定点?

    我经常处于这样的位置 我的代码如下所示 iterate improve x 我正在寻找第一个值 该值不再比前一个值有所改进 两者都不filter nor take while帮助他们找到一个明显的解决方案 然而 我犹豫着要不要写出来 loo