为什么在 clojure 中 will (seq #{3 1 22 44}) 会输出 (1 3 44 22) ?

2023-12-08

它是如何工作的?

(序列#{3 1 22 44})

为什么顺序会像

(1 3 44 22)


因为根据定义,集合数据结构是无序的:http://en.wikipedia.org/wiki/Set_(data_struct)

更准确地说,Clojure 的内置集(#{blah blah blah}给你)是一个哈希集——也就是说,一个由哈希表支持的集合(http://en.wikipedia.org/wiki/Hash_tables)。它为您提供以下保证:

  • 每个元素的唯一性(不允许重复)。
  • 插入和遏制检查的 O(1) 性能特征。
  • 迭代工作——调用seq将为您提供集合中的每个元素,但顺序未定义。

这里,未定义的顺序意味着迭代顺序取决于您在集合中插入的元素、它们的数量、插入它们的顺序、您之前可能在该集合上尝试过的所有其他操作以及各种其他实现细节这可能会从一种语言版本更改为另一种语言版本(甚至在实现之间 - 您可能并且可能会在 Clojure、在 64 位 JVM 上运行的 Clojure 或 ClojureScript 中得到不同的结果)。

重要的是,如果您正在编写与集合(或映射)一起使用的代码,切勿使其依赖于所述集合/映射中的任何顺序概念。它会坏掉的。

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

为什么在 clojure 中 will (seq #{3 1 22 44}) 会输出 (1 3 44 22) ? 的相关文章

  • 确保 Clojure 中只有一个服务实例正在运行/启动/停止的规范方法?

    我正在用 Neo4j 支持的 Clojure 编写一个有状态服务器 它可以服务套接字请求 例如 HTTP 当然 这意味着我需要能够从该服务器内启动和停止套接字服务器 在设计方面 我希望能够在此服务器中声明一个 服务 并启动和停止它 我在 C
  • 如何在 Jetty 中以编程方式设置 gzip?

    我正在使用 Noir 和 clojure 编写一个网络应用程序 它使用 Jetty Jetty 有两种使用 gzip 的方法 一种用于静态 一种用于动态 它们在https stackoverflow com a 9113129 104021
  • 如何从集合中检索元素而不删除它?

    假设如下 gt gt gt s set 1 2 3 我如何获得一个值 任何值 s不做s pop 我想将该项目保留在集合中 直到我确定可以删除它 这只有在异步调用另一个主机之后才能确定 又快又脏 gt gt gt elem s pop gt
  • 有没有好的 Clojure 基准测试?

    Edit Clojure 基准测试已达到基准游戏 http benchmarksgame alioth debian org u64q clojure html 我已经制作了这个问题社区维基并邀请其他人保持更新 有人知道 Clojure 性
  • 如何使用 Clojure 在命令行中更改目录?

    我正在寻找的是 Windows 命令行中的这种命令行交互 C temp1 gt clj some script clj C temp2 gt 其中 some script clj 包含类似以下内容 cd c temp2 那么问题来了 如何实
  • 我如何在环中模拟 json post 请求?

    我正在使用橄榄石 https github com xeqi peridot https github com xeqi peridot测试我的环应用程序 它工作正常 直到我尝试使用 json 数据模拟 post 请求 require ch
  • 如何使用clojure中的map函数打印哈希映射列表的每个元素?

    我正在构建一个哈希映射列表 然后将其传递给另一个函数 当我尝试使用打印列表中的每个哈希映射时map它不工作 我可以打印完整列表或获取第一个元素等 defn m a println a map println a 以下仅适用于 repl m
  • 如何在 RHEL 6.1 / JDK7 上安装 Clojure 1.3 with contribs?

    我一直在努力让它发挥作用 获取 clojure 1 3 是一件轻而易举的事 但现在我一直在尝试安装 contrib 库 但遇到了错误 有关于如何正确执行此操作的指南吗 旧的 clojure contrib 整体库与 clojure 1 3
  • 选择具有预期数量的唯一值和插入的 HashSet 的初始容量

    好的 这是我的情况 我有一个状态数组 其中可能包含重复项 为了消除重复项 我可以将它们全部添加到一个集合中 但是 当我创建集合时 它希望定义初始容量和负载系数 但它们应该设置为什么呢 通过谷歌搜索 我想出了 String allStates
  • 为什么 F# 的默认集合是排序的,而 C# 的不是?

    当从 C 世界迁移到 F 最惯用的可能 思维方式时 我发现了这个有趣的差异 在 C 的 OOP mutable 世界中 默认的集合集合似乎是HashSet https learn microsoft com en us dotnet api
  • Clojure 中的快速素数生成

    我一直在努力解决欧拉计划 https projecteuler netClojure 中的问题得到了改善 我已经遇到过几次素数生成问题 我的问题是它花费的时间太长了 我希望有人能帮助我找到一种有效的方法 以 Clojure 的方式做到这一点
  • 如何在Python中对集合进行排序? [复制]

    这个问题在这里已经有答案了 我试图通过向其中添加元素来对 python 中的集合进行排序 我尝试使用sorted 方法 但它正在将我的集合转换为列表 我需要对元素进行排序并将其作为一组打印 我怎样才能做到这一点 我尝试使用sorted 方法
  • 如何在 repl 中加载新的 clojure 库

    所以我有这个工作流程问题 我很高兴在我的 clojure 项目 repl 上打字 并意识到我需要另一个不在我的库中的库project clj 在这种情况下 我需要tools cli图书馆 我打开project clj在我的编辑器中添加一个条
  • 调用 Clojure 高阶函数

    如果我定义一个返回如下函数的函数 defn add n n fn x x n 然后我可以将结果分配给一个符号 def add 1 add n 1 并称其为 add 1 41 gt 42 我如何调用结果 add n 1 而不将其分配给新符号
  • 当参数是大映射时跟踪函数

    当我跟踪一个函数时 如果其中一个参数是包含大量元素的嵌套映射 则跟踪会充满混乱 这是一个典型的例子 TRACE t36705 get value nodeclass simple nodeid simple25 dock constan t
  • Python:快速提取大量列表中所有可能的2组合之间的交集

    我有一个大约的数据集 9K 可变长度列表 1 到 100K 元素 我需要计算交集的长度所有可能的 2 列表组合在此数据集中 请注意 每个列表中的元素都是唯一的 因此它们可以在 python 中存储为集合 在 python 中执行此操作最有效
  • 排序映射对现有键返回 nil 值

    我尝试从排序映射中按键获取值 并按其返回的值进行比较nil def tmap 1 v 1 2 v 2 3 v 3 def tmap sorted apply sorted map by let val comp compare get in
  • Python 集合并集引发 TypeError

    考虑一系列集合 gt gt gt n 2 n for n in range 5 0 1 2 2 4 3 6 8 4 将它们直接传递到 union 方法中会产生正确的结果 gt gt gt set union 0 1 2 2 4 3 6 8
  • 如何在 Clojure 中将字符串转换为函数?

    我一直在努力Clojure 问题 135 中缀计算器 http www 4clojure com problem 135 基本上是一个简化的中缀到前缀算术计算器 7 2 5 我按照指定解决了问题 但这让我想知道 如果参数作为字符串提供怎么办
  • 用纯函数式语言保持状态

    我正在尝试弄清楚如何执行以下操作 假设您正在开发直流电机的控制器 您希望让它以用户设置的特定速度旋转 def set point ref sp 90 while true let curr read speed controller set

随机推荐

  • 如何计算Android应用程序中两点之间的距离

    在我的应用程序中 我试图计算一个人从一个地方到另一个地方的旅行距离 为此 我使用半正矢公式 R earth s radius mean radius 6 371km lat lat2 lat1 long long2 long1 a sin
  • 为什么线程不停止?

    我的服务生成一个新线程 并根据通常推荐java中断 的方法 当我停止服务时 我会在 onDestroy 中停止线程 服务停止 到达中断代码 然而 很快线程就会从 Runnable 的开头重新启动 public class DoScan ex
  • 使用欧氏距离在 numpy 数组列表中查找 numpy 数组的最近邻居

    我有一个 n 维向量 我想使用欧几里得距离在 n 维向量列表中找到它的 k 个最近邻 我编写了以下代码 k 10 它可以工作 但运行速度太慢 我想知道是否有更优化的解决方案 def nearest neighbors value array
  • MVVM 将 RelayCommand CanExecute 绑定到属性?

    我有一个计时器和三个按钮来控制它 开始 停止和暂停 每个按钮都绑定到一个 RelayCommand 我有一个 TimerState 类型的属性enum TimerState 这对于设置各种 GUI 元素很有用 有没有办法以某种方式将 Rel
  • 根据空格或“双引号字符串”将字符串解析为数组

    我试图获取用户输入字符串并解析为一个名为 char entire line 100 的数组 其中每个单词都放在数组的不同索引处 但如果字符串的一部分用引号封装 则应将其放在单个索引中 所以如果我有 char buffer 1024 0 fg
  • 无法获取托管类型的地址、获取其大小或声明指向托管类型(“类型名称”)的指针

    如果我的结构中有一个或多个 System String 此错误将停止编译还有其他方式存储字符串吗 我尝试过这样的事情 private long B ID private byte C Name private byte C Address
  • 互斥体未释放

    我的 c WinForm 解决方案包含多个项目 其中包括包含 frmAdmin 的管理项目和包含 frmUser 的用户项目 第三个项目包含 frmTimer 它有一个定期启动 frmUser 的计时器 我希望 frmTimer 在 frm
  • 仅使用生产证书时无法注册推送通知

    使用开发证书时 推送通知工作正常 当我在临时发行版中切换到生产证书时 应用程序无法注册推送通知 在 UIApplicationDelegate 中 两者都没有didRegisterForRemoteNotificationsWithDevi
  • Java Swing,尝试用图像图标复选框替换 JTable 中的布尔复选框

    所以我有一个带有复选框的 JTable 我希望复选框在 选中 时包含一个图像 在 未选中 时包含另一图像 即显示图像而不是选中或未选中的框 有没有办法做到这一点 我尝试过使用 TableCellRenderer 返回带有 ImageIcon
  • 自反传递闭包的定义

    许多谓词本质上使用某种形式的传递闭包 只是发现终止也必须得到解决 为什么不一劳永逸地解决这个问题closure0 3 meta predicate closure0 2 meta predicate closure 2 meta predi
  • 第 n 个范围的 CSS 选择器?

    如何调整下面的 CSS 选择器 myTableRow td nth child background color FFFFCC 所以它适用于td列2 4 table tr class myTableRow td column 1 td td
  • 有没有办法将 Linux 共享库加载到特定的内存位置?

    我有一个 Linux 应用程序 它在运行时加载非常小的 一些小函数 共享库 由于各种重要原因 我需要将共享库加载到特定的虚拟内存范围 然而 dlopen 没有提供任何方法 我可以看到 来告诉它或提示它 将其加载的内容放在哪里 有没有办法告诉
  • 导入错误:没有名为“app”的模块

    我正在开发一个具有以下树结构的项目 Project app main py svg to png py init py tests init py unittests basic test py init py 我正在使用以下命令将应用程序
  • Google App Engine - 数据存储实体的 ID 是否会为负数?

    数据存储实体的 ID 是否会为负数 或者它们保证是正数吗 我找不到明确说明这一点的文档 但我从未见过负面的文档 这docs确实 随着新实体的创建 这一数字通常会增加 但不应严格依赖它们 因为您可能会得到稍微乱序的 id 例如 10 11 1
  • 用 mod 重写删除尾部斜杠?

    这与我之前的问题有关 可以查看here 我希望能够删除 URL 中的尾部斜杠 这样它就不会弄乱我网站的某些区域 htaccess 代码在这里 s File Exists RewriteCond REQUEST FILENAME s OR l
  • Rails 3 中不带尾部斜杠的重定向到规范路线

    在 Rails 3 上 我尝试从没有尾部斜杠的 URL 重定向到有斜杠的规范 URL match test to gt redirect test 但是 上面的路由同时匹配 test 和 test 导致重定向循环 如何使其仅匹配不带斜杠的版
  • 如何在C++中生成随机数?

    我正在尝试用骰子制作游戏 并且需要其中包含随机数 以模拟骰子的侧面 我知道如何使其在 1 到 6 之间 使用 include
  • isolatedStorage:删除卸载程序中的首选项?

    我们的应用程序将用户首选项保存在独立存储中 然而 事实证明 从我们的卸载程序中删除这些文件是很棘手的 我可以枚举隔离存储中的所有文件 使用 MSDN 示例代码 找到与我们的强名称密钥相关的文件 并尝试删除 删除它们 不幸的是 这就是一切崩溃
  • 如何运行后台线程定期清理列表中的某些元素?

    我目前正在实施缓存 我已经完成了基本的实现 如下所示 我想要做的是运行一个线程来删除满足某些条件的条目 class Cache int timeLimit 10 how long each entry needs to be kept af
  • 为什么在 clojure 中 will (seq #{3 1 22 44}) 会输出 (1 3 44 22) ?

    它是如何工作的 序列 3 1 22 44 为什么顺序会像 1 3 44 22 因为根据定义 集合数据结构是无序的 http en wikipedia org wiki Set data struct 更准确地说 Clojure 的内置集 b